[Ini adalah pertanyaan mitra untuk Menghitung probabilitas dengan tepat ]
Tugas ini adalah tentang menulis kode untuk menghitung probabilitas secara tepat dan cepat . Outputnya harus berupa probabilitas tepat yang ditulis sebagai pecahan dalam bentuk yang paling dikurangi. Itu seharusnya tidak pernah output 4/8
melainkan 1/2
.
Untuk beberapa bilangan bulat positif n
, pertimbangkan string acak seragam panjang 1s dan -1s n
dan menyebutnya A. Sekarang digabungkan A
dengan nilai pertama. Itu A[1] = A[n+1]
jika pengindeksan dari 1. A
sekarang memiliki panjang n+1
. Sekarang juga pertimbangkan string acak kedua panjang n
dengan n
nilai pertama -1, 0, atau 1 dengan probabilitas 1 / 4,1 / 2, masing-masing 1/4 dan menyebutnya B.
Sekarang perhatikan produk dalam A[1,...,n]
dan B
dan produk dalam A[2,...,n+1]
dan B
.
Sebagai contoh, pertimbangkan n=3
. Nilai yang mungkin untuk A
dan B
bisa A = [-1,1,1,-1]
dan B=[0,1,-1]
. Dalam hal ini dua produk dalam adalah 0
dan 2
.
Kode Anda harus menampilkan probabilitas bahwa kedua produk dalam adalah nol.
Menyalin tabel yang diproduksi oleh Martin Büttner kami memiliki hasil sampel berikut.
n P(n)
1 1/2
2 3/8
3 7/32
4 89/512
5 269/2048
6 903/8192
7 3035/32768
8 169801/2097152
Bahasa dan perpustakaan
Anda dapat menggunakan bahasa dan perpustakaan yang tersedia secara bebas yang Anda suka. Saya harus dapat menjalankan kode Anda jadi tolong sertakan penjelasan lengkap tentang cara menjalankan / kompilasi kode Anda di linux jika memungkinkan.
Tugas
Kode Anda harus mulai dengan n=1
dan memberikan output yang benar untuk setiap peningkatan n pada baris terpisah. Seharusnya berhenti setelah 10 detik.
Nilai
Skor ini hanyalah yang tertinggi yang n
dicapai sebelum kode Anda berhenti setelah 10 detik saat dijalankan di komputer saya. Jika ada seri, pemenanglah yang mendapatkan skor tertinggi tercepat.
Daftar entri
n = 64
dalam Python . Versi 1 oleh Mitch Schwartzn = 106
dalam Python . Versi 11 Juni 2015 oleh Mitch Schwartzn = 151
dalam C ++ . Jawaban Port of Mitch Schwartz oleh kirbyfan64sosn = 165
dalam Python . Versi 11 Juni 2015 versi "pemangkasan" oleh Mitch Schwartz denganN_MAX = 165
.n = 945
dalam Python oleh Min_25 menggunakan rumus yang tepat. Luar biasa!n = 1228
dalam Python oleh Mitch Schwartz menggunakan rumus lain yang tepat (berdasarkan jawaban Min_25 sebelumnya).n = 2761
dalam Python oleh Mitch Schwartz menggunakan implementasi yang lebih cepat dari formula yang persis sama.n = 3250
di Python menggunakan Pypy oleh Mitch Schwartz menggunakan implementasi yang sama. Skor ini perlupypy MitchSchwartz-faster.py |tail
menghindari overhead konsol bergulir.