Esta anécdota contiene el siguiente intercambio intrigante:
"Bien, Fred," interrumpió Avi. "Entonces, ¿cómo cambiarías esto para evitar entradas duplicadas?"
"Oh, solo cambia ese de allí a uno negativo".
Si bien esta afirmación no es precisa en su contexto, me pregunto si hay algún código plausible para el que tenga sentido.
Su desafío es escribir código (un programa, una función, lo que sea) que se ajuste a este criterio:
- Fusiona dos listas de entrada en una, manteniendo duplicados. [editar: Opcionalmente, puede suponer que son enteros y / o que las listas en sí mismas son únicas. No se puede suponer que los enteros son positivos (la única respuesta que hace esto está protegida).]
- Aparece un literal "1" en algún lugar del código. Si cambia esto a un literal "-1", el código hace lo mismo pero elimina los duplicados.
- El código no se ramifica simplemente del 1 / -1. No estamos buscando
if (1 < 1) removeDuplicates()
o[do_nothing, merge_with_dups, merge_without_dups][1].call()
, por ejemplo.
La entrada y la salida pueden estar en cualquier formato razonable que elija. Un ejemplo podría ser
[1,2],[2,3]->[1,2,2,3]
antes del cambio de signo, y [1,2,3]
después.
Este es un concurso de popularidad. No es código golf , a menos que quieras presumir. Aceptaré la respuesta más votada en unas dos semanas.
-1
caso?