Dans ce code-challenge, vous écrivez une fonction de hachage dans 140 octets 1 ou moins de code source. La fonction de hachage doit prendre une chaîne ASCII en entrée et renvoyer un entier non signé de 24 bits ([0, 2 24 -1]) en sortie.
Votre fonction de hachage sera évaluée pour chaque mot de ce grand dictionnaire anglais britannique 2 . Votre score est la quantité de mots qui partagent une valeur de hachage avec un autre mot (une collision).
Le score le plus bas gagne, les liens brisés par la première affiche.
Cas de test
Avant de soumettre, veuillez tester votre script de scoring sur l'entrée suivante:
duplicate
duplicate
duplicate
duplicate
S'il donne un score autre que 4, c'est un buggy.
Règles de clarification:
- Votre fonction de hachage doit être exécutée sur une seule chaîne, pas sur un tableau entier. En outre, votre fonction de hachage ne peut effectuer aucune autre entrée / sortie que la chaîne d'entrée et le nombre entier de sortie.
- Les fonctions de hachage intégrées ou des fonctionnalités similaires (par exemple, le cryptage pour brouiller les octets) sont interdites.
- Votre fonction de hachage doit être déterministe.
- Contrairement à la plupart des autres concours, l’optimisation spécifique de la notation est autorisée.
1 Je sais que Twitter limite les caractères au lieu d'octets, mais pour des raisons de simplicité, nous utiliserons les octets comme limite pour ce défi.
2 Modifié à partir de la propriété wbritish-huge de Debian , supprimant les mots non-ASCII.
D=340275
mots et R=2^24
les sorties de hachage, un hachage aléatoire a des D^2/(2*R) = 3450
paires en collision attendues , dont certaines se chevauchent. Des D^3/(6*R^2) = 23
triples en collision sont prévus et un nombre négligeable de collisions plus importantes, ce qui signifie que ces triples sont probablement disjoints. Cela donne les 6829
mots attendus qui partagent une valeur de hachage, ~ 70
en triples et le reste en paires. L’écart type étant estimé à 118
, l’obtention <6200
d’un hachage aléatoire correspond en gros à un événement de 5 sigma.
Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch's
? Qu'est-ce que ...?