A distância de Hamming entre duas cordas de igual comprimento é o número de posições nas quais os símbolos correspondentes são diferentes.
Let P
Ser uma seqüência de comprimento binária n
e T
ser uma seqüência de comprimento binária 2n-1
. Podemos calcular as n
distâncias de Hamming entre P
todas as n
subcadeias de comprimento da T
ordem da esquerda para a direita e colocá-las em uma matriz (ou lista).
Exemplo de seqüência de distância de Hamming
Let P = 101
e T = 01100
. A sequência de distâncias de Hamming que você obtém desse par é 2,2,1
.
Tarefa
Para aumentar a n
partir de n=1
, considere todos os pares possíveis de cadeias binárias P
de comprimento n
e T
comprimento 2n-1
. Existem 2**(n+2n-1)
tais pares e, portanto, muitas seqüências de distâncias de Hamming. No entanto, muitas dessas sequências serão idênticas. A tarefa é descobrir quantas são distintas para cada uma n
.
Seu código deve gerar um número por valor de n
.
Ponto
Sua pontuação é a mais alta que n
seu código alcança na minha máquina em 5 minutos. O tempo é para o tempo total de execução, não o tempo apenas para isso n
.
Quem ganha
A pessoa com a pontuação mais alta ganha. Se duas ou mais pessoas terminam com a mesma pontuação, então é a primeira resposta que ganha.
Respostas de exemplo
Para n
de 1
para 8
as respostas ideais são 2, 9, 48, 297, 2040, 15425, 125232, 1070553
.
Línguas e bibliotecas
Você pode usar qualquer idioma e bibliotecas disponíveis que desejar. Sempre que possível, seria bom poder executar seu código; portanto, inclua uma explicação completa de como executar / compilar seu código no Linux, se possível.
Minha máquina Os tempos serão executados na minha máquina de 64 bits. Esta é uma instalação padrão do ubuntu com 8GB de RAM, processador de oito núcleos AMD FX-8350 e Radeon HD 4250. Isso também significa que eu preciso executar seu código.
Respostas principais
- 11 em C ++ por feersum. 25 segundos.
- 11 em C ++ por Andrew Epstein. 176 segundos.
- 10 em Javascript por Neil. 54 segundos.
- 9 em Haskell por nimi. 4 minutos e 59 segundos.
- 8 em Javascript por fəˈnɛtɪk. 10 segundos.
fastest-code
deixa mais espaço para otimizações por meio de otimizações em nível de código e de um bom algoritmo. Então eu acho que isso faster-code
é melhor do que faster-algorithm
.