I need to find the Hamming distance between two strings:
chaine1 = 6fb17381822a6ca9b02153d031d5d3da
chaine2 = a242eace2c57f7a16e8e872ed2f2287d
The XOR function didn't work, and my search on the web was not very successful.
I tried to modify something I found on the web, but there's some invalid syntax...:
assert len (chaine1) == len(chaine2)
return sum(chaine1 != chaine2 for chaine1, chaine2 in zip(chaine1, chaine2))
if __name__=="__main__":
chaine1 = hashlib.md5("chaine1".encode()).hexdigest()
chaine2 = hashlib.md5("chaine2".encode()).hexdigest()
print hamming_distance(chaine1, chaine2)
How could I proceed?
Following is a program calculating the Hamming distance using two different ways.
import hashlib
def hamming_distance(chaine1, chaine2):
return sum(c1 != c2 for c1, c2 in zip(chaine1, chaine2))
def hamming_distance2(chaine1, chaine2):
return len(list(filter(lambda x : ord(x[0])^ord(x[1]), zip(chaine1, chaine2))))
if __name__=="__main__":
chaine1 = hashlib.md5("chaine1".encode()).hexdigest()
chaine2 = hashlib.md5("chaine2".encode()).hexdigest()
#chaine1 = "6fb17381822a6ca9b02153d031d5d3da"
#chaine2 = "a242eace2c57f7a16e8e872ed2f2287d"
assert len(chaine1) == len(chaine2)
print(hamming_distance(chaine1, chaine2))
print(hamming_distance2(chaine1, chaine2))
The reason why you get Invalid syntax: ...
is probably you don't have any indentations, which are required in Python.