Görev, OEIS A005434'ü mümkün olan en kısa sürede hesaplamaktır .
İkili bir S
uzunluk dizesi düşünün n
. Dizine ekleyerek, ile arasında sırayla herkes için eşleşme 1
olup olmadığını belirleyebiliriz . Örneğin,S[1..i+1]
S[n-i..n]
i
0
n-1
S = 01010
verir
[Y, N, Y, N, Y].
Bunun nedeni ise 0
maçları 0
, 01
uymuyor 10
, 010
maçlar 010
, 0101
uymuyor 1010
ve nihayet 01010
kendisini 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 .Y
N
2^n
S
n
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
n
Başlangıç noktasını artırmak 1
iç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 = 1
her biri için cevap vermesini yinelemesi gerekir n
. Tüm koşuyu zamanlayacağım ve iki dakika sonra öldüreceğim.
Puanınız n
o 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.