Odległość Hamminga pomiędzy dwa ciągi o równej długości jest numer pozycji, w którym odpowiednie symbole są różne.
Niech Pbędzie dwójkowym ciągiem długości ni Tdwójkowym ciągiem długości 2n-1. Możemy obliczyć nodległości Hamminga między podciągami Pkażdej ndługości Tw kolejności od lewej do prawej i umieścić je w tablicy (lub liście).
Przykład sekwencji odległości Hamminga
Niech P = 101i T = 01100. Sekwencja odległości Hamminga uzyskana z tej pary to 2,2,1.
Zadanie
Aby zwiększyć, nzaczynając od n=1, rozważ wszystkie możliwe pary ciągów binarnych Po długości ni Tdługości 2n-1. Istnieją 2**(n+2n-1)takie pary, a zatem wiele sekwencji odległości Hamminga. Jednak wiele z tych sekwencji będzie identycznych. Zadanie polega na ustaleniu, ile jest odrębnych dla każdego z nich n.
Twój kod powinien wypisywać jedną liczbę na wartość n.
Wynik
Twój wynik jest najwyższy, jaki nTwój kod osiągnie na moim komputerze w ciągu 5 minut. Czas dotyczy całkowitego czasu działania, a nie tylko tego czasu n.
Kto wygrywa
Osoba z najwyższym wynikiem wygrywa. Jeśli dwie lub więcej osób uzyska ten sam wynik, wygrywa pierwsza odpowiedź.
Przykładowe odpowiedzi
Ponieważ nod 1do 8optymalnych odpowiedzi są 2, 9, 48, 297, 2040, 15425, 125232, 1070553.
Języki i biblioteki
Możesz użyć dowolnego dostępnego języka i bibliotek, które ci się podobają. Tam, gdzie jest to wykonalne, dobrze byłoby móc uruchomić kod, więc proszę podać pełne wyjaśnienie, jak uruchomić / skompilować kod w systemie Linux, jeśli to w ogóle możliwe.
Moja maszyna Czasy zostaną uruchomione na moim komputerze 64-bitowym. Jest to standardowa instalacja ubuntu z 8 GB pamięci RAM, ośmiordzeniowym procesorem AMD FX-8350 i Radeon HD 4250. Oznacza to również, że muszę mieć możliwość uruchomienia kodu.
Wiodące odpowiedzi
- 11 w C ++ przez feersum. 25 sekund.
- 11 w C ++ autorstwa Andrew Epsteina. 176 sekund.
- 10 w JavaScript autorstwa Neila. 54 sekundy.
- 9 w Haskell autorstwa nich. 4 minuty i 59 sekund.
- 8 w JavaScript autorstwa fəˈnɛtɪk. 10 sekund.
fastest-codepozostawia więcej miejsca na optymalizacje dzięki optymalizacji zarówno poziomu kodu, jak i dobrego algorytmu. Myślę więc, że faster-codeto lepsze niż faster-algorithm.