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!
fuente
303 has identical files to [305, 606]
lugar de303 has identical files to 305,606
?Respuestas:
JavaScript (nodo de Babel) , 113 bytes
Toma la entrada como una matriz de matrices en
[key, value]
formato. Go go gadget double flatMap!Pruébalo en línea!
JavaScript (nodo de Babel) , 114 bytes
Toma entrada como un objeto JS nativo.
Pruébalo en línea!
fuente
flatMap
flatMap
aún no es ampliamente compatible. Estoy seguro de que hay formas más cortas, pero se está haciendo tarde y no puedo pensar más. : pPython 2 ,
127126 bytesPruébalo en línea!
Toma una lista de pares ordenados
(<studentNumber>,<hash>)
como entrada.fuente
if','in
Retina 0.8.2 , 71 bytes
Pruébalo en línea! Toma datos en líneas separadas pero el enlace incluye un conjunto de pruebas que divide los ejemplos por usted. Explicación:
Repita este partido hasta que no se puedan hacer más reemplazos.
Busque pares de hashes coincidentes y agregue la clave de la segunda coincidencia a la de la primera coincidencia con un separador de coma.
Eliminar todos los hashes.
Mantenga solo las líneas con comas.
Reemplace la primera coma en cada línea con el texto deseado (incluido el espacio final).
fuente
R ,
145132129126124 bytesPruébalo en línea!
Toma un vector con nombre como entrada (los nombres son las claves)
Si
", "
se permite el separador (con un espacio después de la coma) en caso de múltiples duplicados, podemos usar este código y guardar 10 bytes:R , 114 bytes
Pruébalo en línea!
fuente
05AB1E , 34 bytes
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
Ver esta respuesta 05AB1E mío (sección Cómo usar el diccionario? ) Para entender por qué
“ÿ€°Ê¼‡œ€„ “
es"ÿ has identical files to "
.fuente
Ruby ,
9896 bytesPruébalo en línea!
Toma datos como Ruby Hash, regresa imprimiendo.
fuente
Jalea , 39 bytes
Pruébalo en línea!
fuente
C # (compilador interactivo de Visual C #) , 130 bytes
Pruébalo en línea!
Lo extraño de esta pregunta es que los ejemplos se dan en formato JSON como pares clave / valor, lo que generalmente implica que no están ordenados ... En este caso, sin embargo, el orden es importante. Como tal, estoy usando una lista de tuplas para entrada y una lista de cadenas como salida.
fuente
Perl 5, 100 +1 (-n) bytes
Pruébalo en línea!
fuente
Japt , 34 bytes
Pruébalo en línea!
En este momento es un poco inconsistente en el orden de las líneas, pero dentro de una línea sale correctamente. Si las líneas de la salida necesitan estar en un orden específico, tomará unos pocos bytes más. La entrada es solo un conjunto de
[id, hash]
paresExplicación:
fuente
Perl 6 ,
115,110,103 bytes-2 bytes gracias a Jo King
Pruébalo en línea!
Toma una lista de pares ya que los hashes no están ordenados. Una lista de listas de dos elementos ahorraría unos pocos bytes pero parece unidiomática. Devuelve una lista de líneas.
9588 bytes si el orden de las líneas en el resultado no importa:Pruébalo en línea!
fuente
.[1..*]
a.skip