Questo aneddoto contiene il seguente intrigante scambio:
"Bene, Fred", interruppe Avi. "Quindi come cambieresti per evitare voci duplicate?"
"Oh, cambia quello lì in uno negativo."
Mentre questa affermazione non è precisa nel contesto, mi chiedo se ci sia un codice plausibile per il quale ha senso.
La tua sfida è scrivere codice (un programma, una funzione, qualunque cosa) che soddisfi questi criteri:
- Unisce due elenchi di input in uno, mantenendo i duplicati. [modifica: puoi eventualmente supporre che siano numeri interi e / o che gli elenchi stessi siano univoci. Non puoi supporre che gli interi siano positivi (l'unica risposta che fa questo è il nonno).]
- Un "1" letterale appare da qualche parte nel codice. Se lo cambi in letterale "-1", il codice fa la stessa cosa ma rimuove i duplicati.
- Il codice non si ramifica semplicemente da 1 / -1. Non stiamo cercando
if (1 < 1) removeDuplicates()
o[do_nothing, merge_with_dups, merge_without_dups][1].call()
, per esempio.
L'input e l'output possono essere in qualsiasi formato ragionevole tu scelga. Un esempio potrebbe essere
[1,2],[2,3]->[1,2,2,3]
prima che il segno cambi, e [1,2,3]
dopo.
Questo è un concorso di popolarità. Non è il golf del codice , a meno che tu non voglia metterti in mostra. Accetterò la risposta più votata tra circa due settimane.
-1
caso?