Depois que todas as tarefas são enviadas, é criado um dicionário que mapeia o número do aluno para o hash do arquivo.
Esse dicionário, mapa de hash ou mapeamento (seja qual for o idioma), terá a seguinte aparência:
{100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
A chave é o número do aluno e o valor é o hash.
Nossa tarefa é escolher os trapaceiros! Os trapaceiros são os que têm hashes idênticos.
Dada a entrada {100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
, a função deve retornar (ou imprimir) o seguinte texto:
100 has identical files to 430
104 has identical files to 332
Observe como os arquivos onde os hashes são exclusivos não são mencionados.
Além disso, a ordem é importante aqui :
{100: "aabb", 202: "aabb", 303: "ab", 404: "aabb"}
deve retornar (imprimir) o seguinte texto:
100 has identical files to 202,404
É incorreto imprimir um dos seguintes:
202 has identical files to 100,404
100 has identical files to 404, 202
Você deve imprimi-lo em termos de como ele aparece no dicionário. Em alguns idiomas, passar por um dicionário é aleatório; portanto, nesse caso especial, você pode alterar o método de entrada, de modo que possa passar por ele de maneira ordenada.
Mais exemplos:
{} # 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
O menor código vence!
fonte
303 has identical files to [305, 606]
vez de303 has identical files to 305,606
?Respostas:
JavaScript (Nó Babel) , 113 bytes
Recebe a entrada como uma matriz de matrizes em
[key, value]
formato. Go go gadget double flatMap!Experimente online!
JavaScript (Nó Babel) , 114 bytes
Recebe entrada como um objeto JS nativo.
Experimente online!
fonte
flatMap
flatMap
ainda não é amplamente suportado. Tenho certeza de que existem maneiras mais curtas, mas está ficando tarde e não consigo mais pensar. : pPython 2 ,
127126 bytesExperimente online!
Leva uma lista de pares ordenados
(<studentNumber>,<hash>)
como entrada.fonte
if','in
Retina 0.8.2 , 71 bytes
Experimente online! Recebe entrada em linhas separadas, mas o link inclui um conjunto de testes que divide os exemplos para você. Explicação:
Repita esta partida até que não seja possível fazer mais substituições.
Procure pares de hashes correspondentes e anexe a chave da segunda correspondência à da primeira correspondência com um separador de vírgula.
Exclua todos os hashes.
Mantenha apenas as linhas com vírgulas.
Substitua a primeira vírgula em cada linha pelo texto desejado (incluindo o espaço à direita).
fonte
R ,
145132129126124 bytesExperimente online!
É necessário um vetor nomeado como entrada (os nomes são as chaves)
Se o
", "
separador (com um espaço após a vírgula) for permitido no caso de várias duplicatas, podemos usar este código e salvar 10 bytes:R , 114 bytes
Experimente online!
fonte
05AB1E , 34 bytes
Experimente online ou verifique todos os casos de teste .
Explicação:
Veja esta resposta 05AB1E meu (seção Como usar o dicionário? ) Para entender por que
“ÿ€°Ê¼‡œ€„ “
é"ÿ has identical files to "
.fonte
Ruby ,
9896 bytesExperimente online!
Recebe a entrada como Ruby Hash, retorna pela impressão.
fonte
Geléia , 39 bytes
Experimente online!
fonte
C # (compilador interativo do Visual C #) , 130 bytes
Experimente online!
O estranho dessa pergunta é que os exemplos são dados no formato JSON como pares de chave / valor, o que geralmente implica que eles não são ordenados ... Nesse caso, no entanto, a ordem é importante. Como tal, estou usando uma lista de tuplas para entrada e uma lista de seqüências de caracteres como saída.
fonte
Perl 5, 100 +1 (-n) bytes
Experimente online!
fonte
Japonês , 34 bytes
Experimente online!
No momento, é um pouco inconsistente na ordem das linhas, mas dentro de uma linha ela sai corretamente. Se as linhas da saída precisarem estar em uma ordem específica, serão necessários mais alguns bytes. A entrada é apenas uma matriz de
[id, hash]
paresExplicação:
fonte
Perl 6 ,
115110103 bytes-2 bytes graças a Jo King
Experimente online!
Faz uma lista de pares, pois os hashes não são ordenados. Uma lista de listas de dois elementos salvaria alguns bytes, mas parece unidiomatic. Retorna uma lista de linhas.
9588 bytes se a ordem das linhas no resultado não importar:Experimente online!
fonte
.[1..*]
para.skip