Расстояние Хэмминга между двумя строками одинаковой длины - это число позиций, в которых соответствующие символы различны.
Позвольте 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.