Después de enviar todas las tareas, se crea un diccionario que asigna el número de estudiante al hash de su archivo.
Este diccionario, o hashmap, o mapeo (como lo llame su idioma) se verá de la siguiente manera:
{100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
La clave es el número de estudiante y el valor es el hash.
¡Nuestra tarea es elegir a los tramposos! Los tramposos son los que tienen hashes idénticos.
Dada la entrada {100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}, la función debería devolver (o imprimir) el siguiente texto:
100 has identical files to 430
104 has identical files to 332
Observe cómo no se mencionan los archivos donde los hashes son únicos.
Además, el orden es importante aquí :
{100: "aabb", 202: "aabb", 303: "ab", 404: "aabb"} debe devolver (imprimir) el siguiente texto:
100 has identical files to 202,404
Es incorrecto imprimir cualquiera de los siguientes:
202 has identical files to 100,404
100 has identical files to 404, 202
Debe imprimirlo en términos de cómo aparece en el diccionario. En algunos idiomas, pasar por un diccionario es aleatorio, por lo que en este caso especial, se le permite cambiar el método de entrada de modo que pueda pasarlo de manera ordenada.
Más ejemplos:
{} # 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
¡El código más corto gana!
303 has identical files to [305, 606]lugar de 303 has identical files to 305,606?