Knockout è una partita di basket in cui i giocatori a turno sparano. Si gioca come una sequenza di contest a due giocatori, ognuno dei quali ha la possibilità di "buttare giù" uno di quei giocatori.
Supponiamo che i giocatori siano A B C De le loro possibilità di sparare e fare un canestro siano 0.1 0.2 0.3 0.4, indipendentemente dall'altro giocatore nel concorso. I due giocatori in prima linea Ae B"combattono". Poiché Ava per primo, è il difensore , in pericolo di essere eliminato, ed Bè l' attaccante , e non in pericolo di eliminazione immediata. Aspara per primo. Se Ace la fa, Aha difeso con successo e va in fondo alla linea. La linea cambierebbe in B C D A. Se Anon ce la fa, allora Bspara. Se Bce la fa, allora Aè fuori e Bva sul retro della linea, quindi la linea diventa C D B. Se nessuno dei dueAné ce la Bfa, il processo si ripete, con lo Ascatto di nuovo, fino a quando uno Ao Bfa un canestro.
Supponiamo che la linea sia cambiata in B C D A( Aera stata difesa con successo). Ora, Be C"combatti" con l' Bessere il difensore e l' Cessere l'attaccante. Questo processo si ripete fino a quando rimane una sola persona. Quella persona è il vincitore.
Il tuo compito è calcolare le probabilità di vincita di ogni persona data la possibilità che realizzeranno un paniere.
Input :
Un elenco di numeri, come ad esempio 0.1 0.2o 0.5 0.5 0.5 0.5, dove il n ° numero è la possibilità che il n ° giocatore farà un cestino. Puoi prendere questo input nel formato che preferisci, inclusi i parametri di una funzione.
Uscita :
Un elenco di numeri, dove il n ° numero è la possibilità che il n ° giocatore vincerà la partita. I tuoi numeri devono essere precisi con almeno due cifre decimali almeno il 90% delle volte. Ciò significa che è possibile utilizzare un approccio basato sulla simulazione. Tuttavia, se il tuo codice non è basato sulla simulazione (è garantito che restituisca una risposta corretta ad almeno 6 cifre decimali), togli il 30% dal tuo punteggio.
Esempio tra 0.5 0.5: chiama i giocatori Ae B. Sia pla probabilità di una vittoria. Aha la 2/3possibilità di difendersi con successo (dal momento che c'è una 1/2possibilità che Asegna, 1/4un'occasione che Amanca e Bsegna e 1/4un'occasione che manca e il processo si ripete). Se Anon riesce a difendersi, viene eliminato e Bvince. Se Adifende, allora la linea diventa B A. Poiché la situazione è simmetrica, la probabilità di Avincita è (1 - p). Noi abbiamo:
p = 2/3 * (1 - p) + 1/3 * 0. Risolvendo, otteniamo p = 2/5. L'output dovrebbe essere 2/5 3/5o 0.4 0.6.
Non sono abbastanza bravo con probabilità di fare esempi più complessi.
Se hai bisogno di più casi di test, eccone alcuni:
0.1 0.2 0.3 0.4 --> 0.01 0.12 0.25 0.62
0.99 0.99 --> 0.5 0.5 (it's not exact, but if you round to two decimal places, you get 0.5 and 0.5)