Po przesłaniu wszystkich zadań tworzony jest słownik, który odwzorowuje liczbę studentów na skrót ich pliku.
Ten słownik, mapa skrótów lub mapowanie (niezależnie od tego, jak nazywa się Twój język) będzie wyglądać następująco:
{100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
Kluczem jest numer studenta, a wartością jest skrót.
Naszym zadaniem jest wybranie oszustów! Oszuści to ci, którzy mają identyczne hasze.
Biorąc pod uwagę dane wejściowe {100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}, funkcja powinna zwrócić (lub wydrukować) następujący tekst:
100 has identical files to 430
104 has identical files to 332
Zauważ, że pliki, dla których skróty są unikalne, nie są wymieniane.
Ważna jest również kolejność :
{100: "aabb", 202: "aabb", 303: "ab", 404: "aabb"} powinien zwrócić (wydrukować) następujący tekst:
100 has identical files to 202,404
Jest to błędne wydrukować dowolny z poniższych sytuacji:
202 has identical files to 100,404
100 has identical files to 404, 202
Powinieneś wydrukować go pod kątem wyglądu w słowniku. W niektórych językach przeglądanie słownika jest losowe, więc w tym szczególnym przypadku możesz zmienić metodę wprowadzania, tak abyś mógł przeglądać go w uporządkowany sposób.
Więcej przykładów:
{} # 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
Najkrótszy kod wygrywa!
303 has identical files to [305, 606]zamiast 303 has identical files to 305,606?