Görev, OEIS A005434'ü mümkün olan en kısa sürede hesaplamaktır .
İkili bir Suzunluk dizesi düşünün n. Dizine ekleyerek, ile arasında sırayla herkes için eşleşme 1olup olmadığını belirleyebiliriz . Örneğin,S[1..i+1]S[n-i..n]i0n-1
S = 01010
verir
[Y, N, Y, N, Y].
Bunun nedeni ise 0maçları 0, 01uymuyor 10, 010maçlar 010, 0101uymuyor 1010 ve nihayet 01010kendisini eşleşir.
Tüm olası farklı bit uzunluk dizgileri üzerinde yineleme yaparken s ve s'nin f(n)farklı dizilerinin sayısı olarak tanımlayın .YN2^nSn
Gözlemci, bu sorunun son zamanlardaki başka bir sorunun daha basit bir varyantı olduğunu fark edecektir . Ancak, akıllı hilelerin bunu daha hızlı ve daha kolay hale getirmesini bekliyorum.
Görev
nBaşlangıç noktasını artırmak 1için kodunuzun çıktısı alınmalıdır n, f(n).
Örnek cevaplar
Çünkü n = 1..24, doğru cevaplar:
1, 2, 3, 4, 6, 8, 10, 13, 17, 21, 27, 30, 37, 47, 57, 62, 75, 87, 102, 116, 135, 155, 180, 194
puanlama
Kodunuzun n = 1her biri için cevap vermesini yinelemesi gerekir n. Tüm koşuyu zamanlayacağım ve iki dakika sonra öldüreceğim.
Puanınız no zaman aldığınız en yüksek puan .
Beraberlik durumunda, ilk cevap kazanır.
Kodum nerede test edilecek?
Kodunuzu bir Lubuntu konuk VM'sinde (Windows 7 sunucumda) Virtualbox altında çalıştıracağım .
Dizüstü bilgisayarımda 8GB RAM ve 2 çekirdekli ve 4 iş parçacıklı Intel i7 5600U@2.6 GHz (Broadwell) CPU var. Komut kümesi SSE4.2, AVX, AVX2, FMA3 ve TSX'i içerir.
Her dil için önde gelen girişler
- n = 599 yılında Pas bu Anders Kaseorg.
- n = 30 olarak C Güvenlik çok kötü ile. Cygwin'de yerel olarak çalıştırıldığında paralel sürüm 32'ye çıkar.