Nachdem alle Aufgaben eingereicht wurden, wird ein Wörterbuch erstellt, das die Schülernummer dem Hash ihrer Datei zuordnet.
Dieses Wörterbuch, diese Hashmap oder dieses Mapping (wie auch immer Ihre Sprache es nennt) sieht folgendermaßen aus:
{100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
Der Schlüssel ist die Schülernummer und der Wert ist der Hash.
Unsere Aufgabe ist es, die Betrüger auszusuchen! Die Betrüger sind diejenigen, die identische Hashes haben.
Bei gegebener Eingabe {100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
sollte die Funktion den folgenden Text zurückgeben (oder drucken):
100 has identical files to 430
104 has identical files to 332
Beachten Sie, dass die Dateien, in denen die Hashes eindeutig sind, nicht erwähnt werden.
Auch hier ist die Reihenfolge wichtig :
{100: "aabb", 202: "aabb", 303: "ab", 404: "aabb"}
sollte den folgenden Text zurückgeben (drucken):
100 has identical files to 202,404
Es ist falsch , eines der folgenden Elemente zu drucken:
202 has identical files to 100,404
100 has identical files to 404, 202
Sie sollten es so drucken, wie es im Wörterbuch angezeigt wird. In einigen Sprachen ist das Durchsuchen eines Wörterbuchs zufällig. In diesem speziellen Fall können Sie die Eingabemethode so ändern, dass Sie es ordnungsgemäß durchgehen können.
Mehr Beispiele:
{} # prints nothing
{100: "ab", 303: "cd"} # prints nothing again
{100: "ab", 303: "cd", 404: "ab"}
100 has identical files to 404
{303: "abc", 304: "dd", 305: "abc", 405: "dd", 606: "abc"}
303 has identical files to 305,606
304 has identical files to 405
Der kürzeste Code gewinnt!
303 has identical files to [305, 606]
statt ausgeben 303 has identical files to 305,606
?