Відстань Хеммінга між двома струнами однакової довжини - це кількість позицій, на яких відповідні символи різні.
Дозвольте 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.