Hamming mesafesi eşit uzunlukta iki sırası arasındaki karşılık gelen simgeler farklı olan pozisyonların sayısıdır.
Izin P
vermek bir ikili dize uzunluğu n
ve T
bir ikili dize uzunluğu 2n-1
. Soldan sağa sırayla n
Hamming mesafelerini P
ve her n
uzunluktaki alt dizelerini hesaplayabilir T
ve bunları bir diziye (veya listeye) koyabiliriz.
Örnek Hamming mesafe sırası
Bırakın P = 101
ve T = 01100
. Bu çiftten aldığınız Hamming mesafelerinin sırası 2,2,1
.
Görev
Artan İçin n
başlayan n=1
ikili dizeleri tüm olası çiftleri dikkate P
uzunluğu n
ve T
uzunluk 2n-1
. Öyle 2**(n+2n-1)
çiftler var ve bu nedenle Hamming mesafelerinin birçok dizisi var. Bununla birlikte, bu dizilerin çoğu aynı olacaktır. Görev, her biri için kaç tanesinin farklı olduğunu bulmaktır n
.
Kodunuzun değeri başına bir sayı çıkmalıdır n
.
Puan
Puanınız n
kodunuzun 5 dakika içinde makinemde ulaştığı en yüksek puan . Zamanlama, sadece bunun için değil toplam çalışma süresi içindir n
.
Kim kazanır
En yüksek puanı alan kişi kazanır. İki veya daha fazla kişi aynı puanı alırsa, kazanan ilk cevaptır.
Örnek cevaplar
İçin n
gelen 1
için 8
cevaplar optimum 2, 9, 48, 297, 2040, 15425, 125232, 1070553
.
Diller ve kütüphaneler
İstediğiniz dil ve kitaplıkları kullanabilirsiniz. Mümkün olduğunda, kodunuzu çalıştırabilmeniz iyi olur, bu nedenle lütfen mümkünse kodunuzu Linux'ta nasıl çalıştıracağınız / derleyeceğinize ilişkin tam bir açıklama ekleyin.
Benim Makine zamanlamaları benim 64 bit makinede işletilecek. Bu, 8GB RAM, AMD FX-8350 Sekiz Çekirdekli İşlemci ve Radeon HD 4250 ile standart bir ubuntu yüklemesidir. Bu aynı zamanda kodunuzu çalıştırabilmem gerektiği anlamına gelir.
Öncü cevaplar
- 11 de C ++ feersum ile. 25 saniye.
- 11 yılında C ++ Andrew Epstein tarafından. 176 saniye.
- 10 yılında Javascript Neil tarafından. 54 saniye.
- 9 içinde Haskell'e niml ile. 4 dakika 59 saniye.
- 8 yılında Javascript fənɛtɪk tarafından. 10 saniye.
fastest-code
yaprakları kod seviyesi optimizasyonlar hem yoluyla optimizasyonlar için daha fazla alan ve iyi bir algoritma. Bence bunun faster-code
daha iyi olduğunu düşünüyorum faster-algorithm
.