Une fois toutes les affectations soumises, un dictionnaire est créé qui associe le numéro d'élève au hachage de leur fichier.
Ce dictionnaire, ou hashmap, ou mappage (quel que soit votre langage) se présentera comme suit:
{100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
La clé est le numéro d'étudiant et la valeur est le hachage.
Notre tâche est de choisir les tricheurs! Les tricheurs sont ceux qui ont des hachages identiques.
Compte tenu de l'entrée {100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}
, la fonction doit retourner (ou imprimer) le texte suivant:
100 has identical files to 430
104 has identical files to 332
Notez que les fichiers dont les hachages sont uniques ne sont pas mentionnés.
De plus, la commande est importante ici :
{100: "aabb", 202: "aabb", 303: "ab", 404: "aabb"}
doit retourner (imprimer) le texte suivant:
100 has identical files to 202,404
Il est incorrect d'imprimer l'un des éléments suivants:
202 has identical files to 100,404
100 has identical files to 404, 202
Vous devez l'imprimer en fonction de la façon dont il apparaît dans le dictionnaire. Dans certaines langues, parcourir un dictionnaire est aléatoire, donc dans ce cas particulier, vous êtes autorisé à changer la méthode de saisie de manière à pouvoir le parcourir de manière ordonnée.
Plus d'exemples:
{} # 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
Le code le plus court gagne!
la source
303 has identical files to [305, 606]
place de303 has identical files to 305,606
?Réponses:
JavaScript (nœud Babel) , 113 octets
Prend l'entrée comme un tableau de tableaux au
[key, value]
format. Go go gadget double flatMap!Essayez-le en ligne!
JavaScript (nœud Babel) , 114 octets
Prend l'entrée en tant qu'objet JS natif.
Essayez-le en ligne!
la source
flatMap
flatMap
n'est pas encore largement pris en charge. Je suis sûr qu'il existe des moyens plus courts, mais il se fait tard et je ne peux plus penser. : pPython 2 ,
127126 octetsEssayez-le en ligne!
Prend une liste de paires ordonnées
(<studentNumber>,<hash>)
en entrée.la source
if','in
Retina 0.8.2 , 71 octets
Essayez-le en ligne! Prend des informations sur des lignes distinctes mais le lien inclut une suite de tests qui divise les exemples pour vous. Explication:
Répétez cette correspondance jusqu'à ce qu'aucun autre remplacement ne puisse être effectué.
Recherchez des paires de hachages correspondants et ajoutez la clé de la deuxième correspondance à celle de la première correspondance avec un séparateur de virgules.
Supprimez tous les hachages.
Ne gardez que les lignes avec des virgules.
Remplacez la première virgule sur chaque ligne par le texte souhaité (y compris l'espace de fin).
la source
R ,
145132129126124 octetsEssayez-le en ligne!
Il prend un vecteur nommé en entrée (les noms sont les clés)
Si le
", "
séparateur (avec un espace après la virgule) est autorisé en cas de doublons multiples, nous pouvons utiliser ce code et économiser 10 octets:R , 114 octets
Essayez-le en ligne!
la source
05AB1E , 34 octets
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
Voir cette réponse 05AB1E de mes (section Comment utiliser le dictionnaire? ) Pour comprendre pourquoi
“ÿ€°Ê¼‡œ€„ “
est"ÿ has identical files to "
.la source
Rubis ,
9896 octetsEssayez-le en ligne!
Prend l'entrée comme Ruby Hash, retourne par impression.
la source
Gelée , 39 octets
Essayez-le en ligne!
la source
C # (Visual C # Interactive Compiler) , 130 octets
Essayez-le en ligne!
La chose étrange à propos de cette question est que les exemples sont donnés au format JSON sous forme de paires clé / valeur, ce qui implique généralement qu'ils ne sont pas ordonnés ... Dans ce cas cependant, l'ordre est important. En tant que tel, j'utilise une liste de tuples pour l'entrée et une liste de chaînes comme sortie.
la source
Perl 5, 100 +1 (-n) octets
Essayez-le en ligne!
la source
Japt , 34 octets
Essayez-le en ligne!
En ce moment, c'est un peu incohérent dans l'ordre des lignes, mais au sein d'une ligne, il sort correctement. Si les lignes de la sortie doivent être dans un ordre spécifique, cela prendra quelques octets supplémentaires. L'entrée n'est qu'un tableau de
[id, hash]
pairesExplication:
la source
Perl 6 ,
115110103 octets-2 octets grâce à Jo King
Essayez-le en ligne!
Prend une liste de paires car les hachages ne sont pas ordonnés. Une liste de listes à deux éléments permettrait d'économiser quelques octets, mais semble unidiomatique. Renvoie une liste de lignes.
9588 octets si l'ordre des lignes dans le résultat n'a pas d'importance:Essayez-le en ligne!
la source
.[1..*]
à.skip