Dopo aver inviato tutti i compiti, viene creato un dizionario che associa il numero dello studente all'hash del loro file.
Questo dizionario, o hashmap o mappatura (come la tua lingua lo chiama) apparirà come segue:
{100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
La chiave è il numero dello studente e il valore è l'hash.
Il nostro compito è quello di scegliere gli imbroglioni! Gli imbroglioni sono quelli che hanno hash identici.
Dato l'input {100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
, la funzione dovrebbe restituire (o stampare) il seguente testo:
100 has identical files to 430
104 has identical files to 332
Notare come i file in cui gli hash sono univoci non vengono menzionati.
Inoltre, l'ordine è importante qui :
{100: "aabb", 202: "aabb", 303: "ab", 404: "aabb"}
dovrebbe restituire (stampare) il seguente testo:
100 has identical files to 202,404
È errato stampare uno dei seguenti:
202 has identical files to 100,404
100 has identical files to 404, 202
Dovresti stamparlo in termini di come appare nel dizionario. In alcune lingue, passare attraverso un dizionario è casuale, quindi in questo caso speciale, è possibile modificare il metodo di input in modo da poterlo seguire in modo ordinato.
Altri esempi:
{} # 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
Il codice più corto vince!
303 has identical files to [305, 606]
invece di 303 has identical files to 305,606
?