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.
popularity-contest
histocrat
fuente
fuente
-1
caso?Respuestas:
JavaScript
Tome un algoritmo convencional y escríbalo con un error:
Este código contiene exactamente un literal
1
. Si se cambia a-1
, se eliminarán los duplicados. Se puede usar en cualquier valor comparable.fuente
APL 22/23
Solicita la entrada de pantalla a través de ← ⎕ y devuelve una lista combinada ordenada con o, si la principal se establece negativa, sin duplicados.
Contadores de bytes, tenga en cuenta que los caracteres APL de un solo byte se han convertido a UTF8 para representarlos correctamente en este sitio.
fuente
k (18)
Debería funcionar para cualquier tipo válido de lista
Ejemplo:
fuente
Pitón
fuente
Golpetazo
En el espíritu del contexto, este programa elimina los duplicados si agrega un signo menos antes de la minúscula
l
en lagrep
línea. Si agrega un signo menos antes de las mayúsculasI
en la línea anterior, o antes del dígito1
en la línea siguiente, el programa no se comporta de manera diferente.Los archivos de entrada contienen un número entero por línea (esta es la representación habitual de las listas como archivos de texto). Deben pasarse como dos argumentos. La lista resultante se escribe en la salida estándar.
Siéntase libre de usar este programa como ejemplo de su mejor código en una entrevista. Todo lo que pido es que no digas que es mi mejor código.
fuente
Tcl
En el espíritu de la cita
Si es un duplicado, multiplíquelo con (-) 1, luego filtre los valores negativos.
fuente
Soy principiante en PHP, no sé si es correcto
fuente