In dieser Code-Challenge schreiben Sie eine Hash-Funktion in 140 Byte 1 oder weniger Quellcode. Die Hash-Funktion muss eine ASCII-Zeichenfolge als Eingabe annehmen und eine vorzeichenlose 24-Bit-Ganzzahl ([0, 2 24 -1]) als Ausgabe zurückgeben.
Ihre Hash-Funktion wird für jedes Wort in diesem großen Britisch-Englisch-Wörterbuch 2 ausgewertet . Ihre Punktzahl ist die Anzahl der Wörter, die einen Hash-Wert mit einem anderen Wort teilen (eine Kollision).
Die niedrigste Punktzahl gewinnt, Unentschieden durch das erste Plakat.
Testfall
Testen Sie Ihr Scoring-Skript vor dem Absenden anhand der folgenden Eingabe:
duplicate
duplicate
duplicate
duplicate
Wenn es eine andere Punktzahl als 4 gibt, ist es fehlerhaft.
Regeln klären:
- Ihre Hash-Funktion muss mit einer einzelnen Zeichenfolge ausgeführt werden, nicht mit einem ganzen Array. Außerdem führt Ihre Hash-Funktion möglicherweise keine anderen E / A-Vorgänge als die Eingabezeichenfolge und die Ausgabe-Ganzzahl aus.
- Eingebaute Hash-Funktionen oder ähnliche Funktionen (z. B. Verschlüsselung für verwürfelte Bytes) sind nicht zulässig.
- Ihre Hash-Funktion muss deterministisch sein.
- Im Gegensatz zu den meisten anderen Wettbewerben ist die Optimierung speziell für die Bewertungseingabe zulässig.
1 Ich bin mir bewusst, dass Twitter Zeichen anstelle von Bytes begrenzt, aber der Einfachheit halber werden wir Bytes als Grenze für diese Herausforderung verwenden.
2 Geändert von Debians britisch-riesigem Format , wobei alle Nicht-ASCII-Wörter entfernt werden.
D=340275
Wörtern und R=2^24
Hash-Ausgaben hat ein zufälliger Hash erwartete D^2/(2*R) = 3450
kollidierende Paare, von denen sich einige überlappen. Es gibt erwartete D^3/(6*R^2) = 23
kollidierende Tripel und eine vernachlässigbare Anzahl größerer Kollisionen, was bedeutet, dass diese Tripel wahrscheinlich disjunkt sind. Dies ergibt erwartete 6829
Wörter, die einen Hash-Wert teilen, ~ 70
in Dreiergruppen und den Rest in Paaren. Die Standardabweichung wird auf geschätzt 118
, so dass das Erhalten <6200
eines zufälligen Hash ungefähr ein 5-Sigma-Ereignis ist.
Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch's
? Was zum...?