La distancia de Hamming entre dos cadenas de igual longitud es el número de posiciones en las que los símbolos correspondientes son diferentes.
Dejado P
ser una cadena binaria de longitud n
y T
ser una cadena binaria de longitud 2n-1
. Podemos calcular las n
distancias de Hamming entre P
y cada n
subcadena de longitud T
en orden de izquierda a derecha y ponerlas en una matriz (o lista).
Ejemplo de secuencia de distancia de Hamming
Deje P = 101
y T = 01100
. La secuencia de distancias de Hamming que obtienes de este par es 2,2,1
.
Tarea
Para aumentar a n
partir de n=1
, considere todos los pares posibles de cadenas binarias P
de longitud n
y T
longitud 2n-1
. Hay 2**(n+2n-1)
tales pares y, por lo tanto, muchas secuencias de distancias de Hamming. Sin embargo, muchas de esas secuencias serán idénticas. La tarea es encontrar cuántos son distintos para cada uno n
.
Su código debe generar un número por valor de n
.
Puntuación
Su puntaje es el más alto n
que alcanza su código en mi máquina en 5 minutos. El tiempo es para el tiempo total de funcionamiento, no el tiempo solo para eso n
.
Quién gana
La persona con el puntaje más alto gana. Si dos o más personas terminan con el mismo puntaje, entonces es la primera respuesta que gana.
Ejemplos de respuestas
Para n
de 1
a 8
las respuestas óptimas son 2, 9, 48, 297, 2040, 15425, 125232, 1070553
.
Idiomas y bibliotecas
Puede usar cualquier idioma y bibliotecas disponibles que desee. Siempre que sea posible, sería bueno poder ejecutar su código, por lo tanto, si es posible, incluya una explicación completa sobre cómo ejecutar / compilar su código en Linux.
Mi máquina Los tiempos se ejecutarán en mi máquina de 64 bits. Esta es una instalación estándar de ubuntu con 8 GB de RAM, procesador AMD FX-8350 de ocho núcleos y Radeon HD 4250. Esto también significa que necesito poder ejecutar su código.
Respuestas principales
- 11 en C ++ por feersum. 25 segundos
- 11 en C ++ por Andrew Epstein. 176 segundos
- 10 en Javascript por Neil. 54 segundos
- 9 en Haskell por nimi. 4 minutos y 59 segundos.
- 8 en Javascript por fəˈnɛtɪk. 10 segundos.
fastest-code
deja más espacio para optimizaciones a través de optimizaciones de nivel de código y un buen algoritmo. Así que creo que faster-code
es mejor que faster-algorithm
.