[Bu, bir olasılığı tam olarak hesaplamak için ortak bir sorudur ]
Bu görev, bir olasılığı tam ve hızlı bir şekilde hesaplamak için kod yazmakla ilgilidir . Çıktı, en düşük biçimde kesir olarak yazılan kesin bir olasılık olmalıdır. Asla çıktı almamalı, daha 4/8
doğrusu 1/2
.
Bazı pozitif tamsayılar için n
, 1s ve -1s uzunlukta eşit rastgele bir dize düşünün ve A olarak n
adlandırın. Şimdi A
ilk değerine bitiştirin . Yani A[1] = A[n+1]
1'den indeksleme eğer A
şimdi uzunluğa sahiptir n+1
. Şimdi n
, ilk n
değerleri her biri 1 / 4,1 / 2, 1/4 olasılıkla -1, 0 veya 1 olan ikinci bir rastgele uzunluk dizesini düşünün ve B olarak adlandırın.
Şimdi iç ürünü incelemek A[1,...,n]
ve B
ve iç ürünü A[2,...,n+1]
ve B
.
Örneğin, düşünün n=3
. İçin olası değerler A
ve B
olabilir A = [-1,1,1,-1]
ve B=[0,1,-1]
. Bu durumda iki iç ürün 0
ve şeklindedir 2
.
Kodunuz, her iki iç ürünün de sıfır olma olasılığını vermelidir.
Martin Büttner tarafından üretilen tabloyu kopyalarken aşağıdaki örnek sonuçlara sahibiz.
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
Diller ve kütüphaneler
Ücretsiz olarak istediğiniz dil ve kütüphaneleri kullanabilirsiniz. Kodunuzu çalıştırmak mümkün olmalıdır bu yüzden mümkün olduğunca linux kodunu çalıştırmak / derlemek için tam bir açıklama ekleyin.
Görev
Kodunuz n=1
her bir artan n için ayrı bir satırda başlamalı ve doğru çıktıyı vermelidir. 10 saniye sonra durmalıdır.
Puan
Skor, n
bilgisayarımda çalıştırıldığında 10 saniye sonra kodunuz durmadan önce ulaşılan en yüksek değerdir. Beraberlik varsa, kazanan en yüksek puana en çabuk ulaşan kişi olacaktır.
Girişler tablosu
n = 64
içinde Python . Sürüm 1 - Mitch Schwartzn = 106
içinde Python . 11 Haziran 2015 Mitch Schwartzn = 151
içerisinde C ++ . Mitch Schwartz Limanı'nın cevbyfan64sos cevabın = 165
içinde Python . Sürüm 11 Haziran 2015 Mitch Schwartz ile "budama" versiyonuN_MAX = 165
.n = 945
içinde Python Min_25 ile tam bir formül kullanılarak. İnanılmaz!n = 1228
içinde Python Mitch Schwartz tarafından (Min_25 önceki bir yanıta bağlı) Başka bir kesin formülü kullanarak.n = 2761
içinde Python Mitch Schwartz tarafından tamamen aynı formülün daha hızlı bir uygulamasını kullanarak.n = 3250
içinde Python kullanarak PYPY aynı uygulamayı kullanarak Mitch Schwartz tarafından. Bu puanpypy MitchSchwartz-faster.py |tail
, konsolun yukarıdan aşağı kaymasını önlemelidir.