Daha önce bir olasılığın hızlı ve doğru bir şekilde nasıl hesaplanacağına dair bir soru sordum . Ancak, kapalı bir form çözümü verildiği için çok kolay oldu! İşte daha zor bir versiyon.
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.A kendi kopyasını . Yani A[1] = A[n+1]endeksleme eğer 1'den, A[2] = A[n+2]vb. Aşimdi uzunluğu var 2n. Ş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 Bile A[1+j,...,n+j]farklı için j =0,1,2,....
Örneğin, düşünün n=3. İçin olası değerler AveB olabilir A = [-1,1,1,-1,...]ve B=[0,1,-1]. Bu durumda ilk iki iç ürün 0ve şeklindedir 2.
Görev
Her biri için j , j=1kodunuzla başlayarak , tüm ilk j+1iç ürünlerin her biri için sıfır olma olasılığını çıkarmalıdır n=j,...,50.
Martin Büttner tarafından üretilen masanın j=1 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
Puan
Puanınız jkodunuzun bilgisayarımdaki 1 dakika içinde tamamladığı en büyük puan . Biraz açıklığa kavuşturmak için, her birij biri bir dakika alır. Önceki bağlantılı sorudaki dinamik programlama kodunun bunu kolayca yapacağını unutmayın j=1.
Kravat kırıcı
İki giriş aynı jpuanı alırsa, kazanan giriş bunun için nmakinemde bir dakika içinde en yüksek olan giriş olacaktır .j . En iyi iki giriş de bu kritere eşitse, kazanan ilk önce cevap olacaktır.
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.
Makinem zamanlamaları benim makinede işletilecek. Bu, AMD FX-8350 Sekiz Çekirdekli İşlemciye standart bir ubuntu yüklemesidir. Bu ayrıca kodunuzu çalıştırabilmem gerektiği anlamına gelir.
Kazanan katılımlar
j=2içinde Python Mitch Schwartz tarafından.j=2içinde Python feersum tarafından. Şu anda en hızlı giriş.