Cette anecdote contient l'échange intrigant suivant:
"Très bien, Fred," interrompit Avi. "Alors comment changeriez-vous cela pour éviter les entrées en double?"
"Oh, change juste celui-là en négatif."
Bien que cette affirmation ne soit pas exacte dans son contexte, je me demande s'il existe un code plausible pour lequel cela a du sens.
Votre défi est d'écrire du code (un programme, une fonction, peu importe) qui correspond à ces critères:
- Fusionne deux listes d'entrée en une seule, en conservant les doublons. [edit: Vous pouvez éventuellement supposer qu'il s'agit d'entiers et / ou que les listes elles-mêmes sont uniques. Vous ne pouvez pas supposer que les nombres entiers sont positifs (la seule réponse qui fait cela est privilégiée).]
- Un "1" littéral apparaît quelque part dans le code. Si vous changez cela en un littéral "-1", le code fait la même chose mais supprime les doublons.
- Le code ne dérive pas simplement du 1 / -1. Nous ne recherchons pas
if (1 < 1) removeDuplicates()
ou[do_nothing, merge_with_dups, merge_without_dups][1].call()
, par exemple.
L'entrée et la sortie peuvent être dans n'importe quel format raisonnable que vous choisissez. Un exemple pourrait être
[1,2],[2,3]->[1,2,2,3]
avant le changement de signe, et [1,2,3]
après.
Il s'agit d'un concours de popularité. Ce n'est pas du golf de code , sauf si vous voulez vous montrer. J'accepte la réponse la plus votée dans environ deux semaines.
la source
-1
cas?Réponses:
Javascript
Prenez un algorithme conventionnel et écrivez-le avec un bug:
Ce code contient exactement un littéral
1
. S'il est modifié en-1
, les doublons seront supprimés. Il peut être utilisé sur toutes les valeurs comparables.la source
APL 22/23
Invite à saisir l'écran via ← ⎕ et renvoie une liste fusionnée ordonnée avec ou, si la première est définie négative, sans doublons.
Compteurs d'octets veuillez noter que les caractères APL à un octet ont été convertis en UTF8 pour un rendu correct sur ce site.
la source
k (18)
Devrait fonctionner pour tout type de liste valide
Exemple:
la source
Python
la source
Frapper
Dans l'esprit du contexte, ce programme supprime les doublons si vous ajoutez un signe moins avant les minuscules
l
sur lagrep
ligne. Si vous ajoutez un signe moins avant la majusculeI
de la ligne précédente ou avant le chiffre1
de la ligne suivante, le programme ne se comporte pas différemment.Les fichiers d'entrée contiennent un entier par ligne (c'est la représentation habituelle des listes sous forme de fichiers texte). Ils doivent être passés comme deux arguments. La liste résultante est écrite en sortie standard.
N'hésitez pas à utiliser ce programme comme exemple de votre meilleur code dans une interview. Tout ce que je demande, c'est que vous ne dites pas que c'est mon meilleur code.
la source
Tcl
Dans l'esprit de la citation
S'il s'agit d'un doublon, multipliez-le par (-) 1, après quoi filtrer les valeurs négatives.
la source
Je suis débutant en PHP, je ne sais pas si c'est correct
la source