Introducción
Por definición, los identificadores únicos deberían ser únicos. Tener múltiples identificadores que son iguales hace que uno recupere datos inesperados. Pero con los datos que llegan simultáneamente de múltiples fuentes, puede ser difícil garantizar la unicidad. Escriba una función que uniquifique una lista de identificadores.
Esta es posiblemente la peor pelusa de rompecabezas que he escrito, pero entiendes la idea.
Requisitos
Dada una lista de cero o más enteros positivos, aplique las siguientes reglas a cada número de principio a fin:
- Si el número es el primero de su tipo, consérvelo.
- Si el número se ha encontrado previamente, reemplácelo con el entero positivo más bajo que no se encuentre en ninguna parte de la lista de entrada completa o en cualquier salida existente.
Para la solucion:
- La solución puede ser un programa o una función.
- La entrada puede ser una cadena, una matriz, pasada como argumentos o entrada de teclado.
- La salida puede ser una cadena, una matriz o imprimirse en la pantalla.
- Todos los números en la lista de salida son distintos.
Supuestos
- La lista de entrada está limpia. Solo contiene enteros positivos.
- Un entero positivo tiene el rango de 1 a 2 31 -1.
- Hay menos de 256 MB de memoria disponibles para las variables de su programa. (Básicamente, no se permiten matrices de 2,147,483,648 elementos).
Casos de prueba
Input: empty
Output: empty
Input: 5
Output: 5
Input: 1, 4, 2, 5, 3, 6
Output: 1, 4, 2, 5, 3, 6
Input: 3, 3, 3, 3, 3, 3
Output: 3, 1, 2, 4, 5, 6
Input: 6, 6, 4, 4, 2, 2
Output: 6, 1, 4, 3, 2, 5
Input: 2147483647, 2, 2147483647, 2
Output: 2147483647, 2, 1, 3
Tanteo
Solo un simple código de golf. El conteo de bytes más bajo para esta fecha la próxima semana gana.
6, 6, ...
dar 6, 1, ...
?
6, 6, 4, 4, 2, 2
caso de prueba confirma la interpretación de Adám: el resultado esperado es 6, 1, 4, 3, 2, 5
, y no 6, 1, 4, 2, 3, 5
.
6, 6, 1, 2, 3, 4, 5
→6, 7, 1, 2, 3, 4, 5