La distance de Hamming entre deux chaînes de longueur égale est le nombre de positions auxquelles les symboles correspondants sont différents.
Soit P
une chaîne binaire de longueur n
et T
une chaîne binaire de longueur 2n-1
. Nous pouvons calculer les n
distances de Hamming entre P
et chaque n
sous-chaîne de longueur T
dans l'ordre de gauche à droite et les mettre dans un tableau (ou une liste).
Exemple de séquence de distance de Hamming
Soit P = 101
et T = 01100
. La séquence des distances de Hamming que vous obtenez de cette paire est 2,2,1
.
Tâche
Pour augmenter à n
partir de n=1
, considérez toutes les paires possibles de chaînes binaires P
de longueur n
et T
de longueur 2n-1
. Il existe de 2**(n+2n-1)
telles paires et donc de nombreuses séquences de distances de Hamming. Cependant, bon nombre de ces séquences seront identiques. La tâche consiste à trouver combien sont distincts pour chacun n
.
Votre code doit afficher un nombre par valeur de n
.
But
Votre score est le plus élevé n
atteint par votre code sur ma machine en 5 minutes. Le timing est pour le temps de fonctionnement total, pas le temps juste pour cela n
.
Qui gagne
La personne avec le score le plus élevé gagne. Si deux personnes ou plus se retrouvent avec le même score, c'est la première réponse qui l'emporte.
Exemples de réponses
Pour n
de 1
aux 8
réponses optimales sont 2, 9, 48, 297, 2040, 15425, 125232, 1070553
.
Langues et bibliothèques
Vous pouvez utiliser toutes les langues et bibliothèques disponibles que vous aimez. Dans la mesure du possible, il serait bon de pouvoir exécuter votre code, veuillez donc inclure une explication complète sur la façon d'exécuter / compiler votre code sous Linux si possible.
Ma machine Les horaires seront exécutés sur ma machine 64 bits. Il s'agit d'une installation Ubuntu standard avec 8 Go de RAM, processeur AMD FX-8350 à huit cœurs et Radeon HD 4250. Cela signifie également que je dois pouvoir exécuter votre code.
Réponses principales
- 11 en C ++ par feersum. 25 secondes.
- 11 en C ++ par Andrew Epstein. 176 secondes.
- 10 en Javascript par Neil. 54 secondes.
- 9 à Haskell par nimi. 4 minutes et 59 secondes.
- 8 en Javascript par fəˈnɛtɪk. 10 secondes.
fastest-code
laisse plus d'espace pour les optimisations grâce aux optimisations au niveau du code et à un bon algorithme. Je pense donc que faster-code
c'est mieux que faster-algorithm
.