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.
-1
cas?