Dalam sebuah teka-teki di buku lama saya, sebuah permainan didefinisikan di mana dua pemain memilih urutan membalik koin yang mereka yakini akan muncul pertama kali ketika koin berulang kali dibalik. (Itu sebenarnya aneh dan bahkan gulungan dadu, tapi detail kecil ini tidak masalah dalam hal kesetaraan masalah.)
Perlu dicatat bahwa jika pemain 1 memilih TTT
dan pemain 2 memilih HTT
, pemain 2 memiliki peluang 7/8 untuk memenangkan permainan, karena satu-satunya cara TTT
bisa datang sebelumnya HTT
adalah jika tiga flip pertama semuanya ekor.
Tugas Anda adalah membuat program atau fungsi yang akan menyimpulkan probabilitas bahwa satu dari dua urutan yang dipilih akan didahulukan. Program Anda akan mengambil dua baris input (atau dua string sebagai argumen), masing-masing mewakili urutan panjang 10 atau kurang:
HTT
TTT
Dan hasilkan probabilitas bahwa pemain pertama akan menang, dalam bentuk pecahan atau desimal:
7/8
0.875
Kode terpendek untuk melakukan ini dalam bahasa apa pun menang.
sumber
Jawaban:
Python 3 (
139136134132126115143)Menggunakan Algoritma Conway seperti yang dijelaskan di sini . Menangani semua pasangan urutan selama yang pertama bukan merupakan pengakhiran dari urutan kedua (sesuai instruksi).
Terima kasih xnor untuk mencukur 6 byte. Terima kasih Zgarb karena menemukan bug dengan yang berikutnya.
sumber
"HTT"
dan"TTT"
,o
memiliki nilai-1
dan membaginya dengan0
.2**i
dengan<<i
, dan probabilitas keluaran dapat ditulis sebagai1/(1/o + 1)
, di mana Anda dapat menempatkan kebalikano
secara langsung.HTH
danT
, meskipun pemain pertama tidak bisa menang. Jawaban lainnya memiliki masalah yang sama.CJam,
44 3836 byteMenggunakan Algoritma Conway yang sama seperti di sini .
Input adalah dua urutan berbeda dalam dua baris. Outputnya adalah probabilitas menang pertama dari yang kedua. Input tidak harus memiliki panjang yang sama
Saya menggunakan rumus untuk menang odds (
p
) untuk pemain pertama A sebagaiMaka probabilitas didefinisikan sebagai
yang, setelah disederhanakan menjadi
dan setelah penyederhanaan, menjadi
Input contoh:
Keluaran:
Cobalah online di sini
sumber
HTH
danT
, meskipun pemain pertama tidak bisa menang. Jawaban lainnya memiliki masalah yang sama.Lua
211 190184Juga menggunakan Conway's Algorithm. Masih baru bagi Lua sehingga ini bisa dipastikan lebih banyak golf.
Tidak disatukan
Versi pertama
sumber