[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/8doğ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 nadlandırın. Şimdi Ailk 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 ndeğ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 Bve iç ürünü A[2,...,n+1]ve B.
Örneğin, düşünün n=3. İçin olası değerler Ave Bolabilir A = [-1,1,1,-1]ve B=[0,1,-1]. Bu durumda iki iç ürün 0ve ş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=1her 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, nbilgisayarı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 = 64içinde Python . Sürüm 1 - Mitch Schwartzn = 106içinde Python . 11 Haziran 2015 Mitch Schwartzn = 151içerisinde C ++ . Mitch Schwartz Limanı'nın cevbyfan64sos cevabın = 165içinde Python . Sürüm 11 Haziran 2015 Mitch Schwartz ile "budama" versiyonuN_MAX = 165.n = 945içinde Python Min_25 ile tam bir formül kullanılarak. İnanılmaz!n = 1228içinde Python Mitch Schwartz tarafından (Min_25 önceki bir yanıta bağlı) Başka bir kesin formülü kullanarak.n = 2761içinde Python Mitch Schwartz tarafından tamamen aynı formülün daha hızlı bir uygulamasını kullanarak.n = 3250iç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.


