Hamming distance entre deux chaînes binaires ne fonctionne pas
J'ai trouvé intéressant de l'algorithme pour calculer la distance de hamming sur cette site:
def hamming2(x,y):
"""Calculate the Hamming distance between two bit strings"""
assert len(x) == len(y)
count,z = 0,x^y
while z:
count += 1
z &= z-1 # magic!
return count
Le point est que cet algorithme ne fonctionne que sur des chaînes de bits et je suis en train de comparer deux chaînes de caractères qui sont binaires, mais ils sont dans la chaîne de format, comme
'100010'
'101000'
Comment puis-je les faire travailler avec cet algorithme?
Quelle est la question? Est-il une erreur?
bin(int('100010',2))
produit binaire.OriginalL'auteur Hyperion | 2015-06-23
Vous devez vous connecter pour publier un commentaire.
Mise en oeuvre:
Et de le tester:
OriginalL'auteur dlask
Si nous sommes à coller à l'algorithme original, nous avons besoin de convertir les chaînes de caractères en nombres entiers pour être en mesure d'utiliser les opérateurs au niveau du bit.
Alors qu'on peut l'appeler comme suit:
Alors que cet algorithme est cool aussi une nouveauté, d'avoir à convertir une chaîne de caractères susceptibles nie l'avantage de vitesse qu'il pourrait avoir. La réponse @dlask posté est beaucoup plus succincte.
OriginalL'auteur Adam Hammes
C'est ce que j'utilise pour calculer la distance de Hamming.
Il compte le nombre de différences entre l'égalité des chaînes de caractères de longueur.
OriginalL'auteur Panos Kal.
Je pense que cela explique bien
The Hamming distance
entre deux chaînes de caractèresOriginalL'auteur Misho Zhghenti