introduction
Par définition, les identifiants uniques doivent être uniques. Le fait d'avoir plusieurs identifiants identiques entraîne la récupération de données inattendues. Mais avec des données provenant simultanément de plusieurs sources, il peut être difficile de garantir l'unicité. Écrivez une fonction qui unifie une liste d'identifiants.
C'est peut-être le pire casse-tête que j'ai écrit, mais vous avez l'idée.
Exigences
Étant donné une liste de zéro ou plusieurs entiers positifs, appliquez les règles suivantes à chaque nombre du premier au dernier:
- Si le numéro est le premier du genre, conservez-le.
- Si le nombre a déjà été rencontré, remplacez-le par l'entier positif le plus bas qui ne se trouve nulle part dans la liste d'entrée entière ou sur une sortie existante.
Pour la solution:
- La solution peut être un programme ou une fonction.
- L'entrée peut être une chaîne, un tableau, passé comme arguments ou une entrée au clavier.
- La sortie peut être une chaîne, un tableau ou imprimée à l'écran.
- Tous les nombres de la liste de sortie sont distincts.
Hypothèses
- La liste d'entrée est propre. Il ne contient que des entiers positifs.
- Un entier positif a une plage de 1 à 2 31 -1.
- Moins de 256 Mo de mémoire sont disponibles pour les variables de votre programme. (Fondamentalement, aucun tableau à 2 147 483 648 éléments n'est autorisé.)
Cas de test
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
Notation
Juste un simple golf de code. Le nombre d'octets le plus bas à cette heure la semaine prochaine l'emporte.
6, 6, ...
donner 6, 1, ...
?
6, 6, 4, 4, 2, 2
cas de test confirme l'interprétation d'Adám: la sortie attendue est 6, 1, 4, 3, 2, 5
et non 6, 1, 4, 2, 3, 5
.
6, 6, 1, 2, 3, 4, 5
6, 7, 1, 2, 3, 4, 5