Расстояние Хэмминга между двумя строками одинаковой длины - это число позиций, в которых соответствующие символы различны.
Позвольте P
быть двоичной строкой длины n
и T
двоичной строкой длины 2n-1
. Мы можем вычислить n
расстояния Хэмминга между подстрокой P
каждой n
длины T
в порядке слева направо и поместить их в массив (или список).
Пример последовательности расстояний Хэмминга
Пусть P = 101
и T = 01100
. Последовательность расстояний Хэмминга, которую вы получаете от этой пары, такова 2,2,1
.
задача
Для увеличения, n
начиная с n=1
, рассмотрим все возможные пары двоичных строк P
длины n
и T
длины 2n-1
. Есть 2**(n+2n-1)
такие пары и, следовательно, много последовательностей расстояний Хэмминга. Однако многие из этих последовательностей будут идентичны. Задача состоит в том, чтобы найти, сколько разных для каждого n
.
Ваш код должен выводить одно число на значение n
.
Гол
Ваша оценка - самая высокая, которую n
ваш код достигает на моей машине за 5 минут. Время для общего времени работы, а не время только для этого n
.
Кто выигрывает
Человек с наибольшим количеством очков побеждает. Если два или более человека имеют одинаковый результат, выигрывает первый ответ.
Пример ответов
Для n
от 1
до 8
оптимальных ответов на этот вопрос 2, 9, 48, 297, 2040, 15425, 125232, 1070553
.
Языки и библиотеки
Вы можете использовать любой доступный язык и библиотеки, которые вам нравятся. Там, где это возможно, было бы хорошо иметь возможность запускать ваш код, поэтому, пожалуйста, включите полное объяснение того, как запускать / компилировать ваш код в Linux, если это вообще возможно.
Моя машина Время будет работать на моей 64-битной машине. Это стандартная установка Ubuntu с 8 ГБ ОЗУ, восьмиъядерным процессором AMD FX-8350 и Radeon HD 4250. Это также означает, что мне нужно иметь возможность запускать ваш код.
Ведущие ответы
- 11 в C ++ по feersum. 25 секунд
- 11 в C ++ Эндрю Эпштейн. 176 секунд
- 10 в Javascript от Нила. 54 секунды
- 9 в Хаскеле Ними. 4 минуты и 59 секунд.
- 8 в Javascript от fəˈnɛtɪk. 10 секунд.
fastest-code
оставляет больше места для оптимизаций благодаря оптимизации на уровне кода и хорошему алгоритму. Так что я думаю, что faster-code
это лучше, чем faster-algorithm
.