Tarkastellaan vielä aiemman tehtävän hajautusfunktiota:
(c_0 A^{n-1} + c_1 A^{n-2} \cdots + c_{n-1} A^0) \bmod M
Parametrit ovat samat kuin aiemmin eli A=23 ja M=2^{32}.
Toteuta tiedostoon collision.py funktio find_other, jolle annetaan parametrina merkkijono. Funktion tulee palauttaa jokin toinen merkkijono, jolla on sama hajautusarvo.
Funktiolle annettava merkkijono muodostuu merkeistä a-z ja siinä on enintään 100 merkkiä. Funktion tulee palauttaa merkkijono, joka täyttää samat vaatimukset.
Funktion tulee toimia tehokkaasti ja palauttaa toinen merkkijono välittömästi.
def hash_value(string):
# voit lisätä tämän funktion aiemmasta tehtävästä testaamista varten
def find_other(string):
# TODO
if __name__ == "__main__":
string1 = "kissa"
string2 = find_other("kissa")
print(string1, hash_value(string1)) # kissa 2905682
print(string2, hash_value(string2)) # zfgjynuk 2905682
Yllä olevassa koodissa on esimerkki siitä, miten funktio find_other voisi toimia. Kun toteutat funktion itse, sen ei kuitenkaan tarvitse palauttaa juuri merkkijonoa zfgjynuk vaan minkä tahansa vaatimusten mukaisen merkkijonon, jonka hajautusarvo on oikea.
