Knockout adalah permainan bola basket tempat para pemain menembak secara bergantian. Ini dimainkan sebagai urutan dari kontes dua pemain, yang masing-masing memiliki kemungkinan "menjatuhkan" salah satu dari pemain tersebut.
Misalkan para pemain A B C Ddan peluang mereka menembak dan membuat keranjang 0.1 0.2 0.3 0.4masing - masing, terlepas dari pemain lain dalam kontes. Dua pemain di garis depan, Adan B, "berkelahi." Sejak Aberjalan lebih dulu, dia adalah bek , dalam bahaya disingkirkan, dan Badalah penyerang , dan tidak dalam bahaya eliminasi langsung. Atunas dulu. Jika Aberhasil, Atelah berhasil dipertahankan, dan pergi ke garis belakang. Garis akan berubah menjadi B C D A. Jika Atidak berhasil, maka Btunas. Jika Bberhasil, maka Akeluar dan Bpergi ke belakang garis, sehingga garis menjadi C D B. Jika tidakAatau Bmembuatnya, proses berulang, dengan Amenembak lagi, sampai salah satu Aatau Bmembuat keranjang.
Misalkan garis diubah menjadi B C D A( Atelah berhasil dipertahankan). Sekarang, Bdan C"berkelahi," dengan Bmenjadi pembela, dan Cmenjadi penyerang. Proses ini berulang sampai hanya satu orang yang tersisa. Orang itu adalah pemenangnya.
Tugas Anda adalah menghitung probabilitas setiap orang yang menang mengingat kemungkinan mereka akan membuat keranjang.
Masukan :
Daftar angka, seperti 0.1 0.2atau 0.5 0.5 0.5 0.5, di mana angka ke- n adalah kesempatan bahwa pemain ke- n akan membuat keranjang. Anda dapat mengambil input ini dalam format apa pun yang Anda suka, termasuk sebagai parameter untuk suatu fungsi.
Keluaran :
Daftar angka, di mana angka ke- n adalah kesempatan bahwa pemain ke- n akan memenangkan pertandingan. Angka Anda harus akurat ke setidaknya dua tempat desimal setidaknya 90% dari waktu. Ini berarti bahwa Anda dapat menggunakan pendekatan berbasis simulasi. Namun, jika kode Anda tidak berdasarkan simulasi ( dijamin untuk mengembalikan jawaban yang benar ke setidaknya 6 tempat desimal) maka ambil 30% dari skor Anda.
Contoh antara 0.5 0.5: Panggil para pemain Adan B. Membiarkan pmenjadi probabilitas menang. Amemiliki 2/3peluang untuk berhasil bertahan (karena ada 1/2peluang yang Amencetak gol, 1/4peluang yang Ameleset dan Bskor, dan 1/4peluang yang gagal dan proses berulang). Jika Agagal bertahan, dia tersingkir dan Bmenang. Jika Abertahan, maka garis itu menjadi B A. Karena situasinya simetris, probabilitas untuk Amenang adalah (1 - p). Kita mendapatkan:
p = 2/3 * (1 - p) + 1/3 * 0. Memecahkan, kita dapatkan p = 2/5. Outputnya harus 2/5 3/5atau 0.4 0.6.
Saya tidak cukup baik dengan probabilitas untuk melakukan contoh yang lebih kompleks.
Jika Anda membutuhkan lebih banyak kasus uji, berikut adalah beberapa:
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)