introduzione
Per definizione, gli identificatori univoci dovrebbero essere univoci. Avere identificatori multipli uguali fa sì che si recuperino dati imprevisti. Ma con i dati che arrivano contemporaneamente da più fonti, può essere difficile garantire l'unicità. Scrivi una funzione che unifica un elenco di identificatori.
Questo è forse il peggior fluff puzzle che abbia mai scritto, ma hai capito.
Requisiti
Dato un elenco di zero o più numeri interi positivi, applica le seguenti regole a ciascun numero dal primo all'ultimo:
- Se il numero è il primo del suo genere, conservalo.
- Se il numero è stato precedentemente rilevato, sostituirlo con il numero intero positivo più basso non trovato in nessun punto dell'intero elenco di input o di qualsiasi output esistente.
Per la soluzione:
- La soluzione può essere un programma o una funzione.
- L'input può essere una stringa, un array, passato come argomento o input da tastiera.
- L'output può essere una stringa, un array o stampato sullo schermo.
- Tutti i numeri nell'elenco di output sono distinti.
ipotesi
- L'elenco di input è pulito. Contiene solo numeri interi positivi.
- Un numero intero positivo ha un intervallo compreso tra 1 e 2 31 -1.
- Sono disponibili meno di 256 MB di memoria per le variabili del programma. (Fondamentalmente, non sono ammessi array a 2.147.483.648 elementi.)
Casi 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
punteggio
Solo un semplice codice golf. Il conteggio di byte più basso in questo momento vince la settimana successiva.
6, 6, ...
dare 6, 1, ...
?
6, 6, 4, 4, 2, 2
test case conferma l'interpretazione di Adám: l'output previsto è 6, 1, 4, 3, 2, 5
e non 6, 1, 4, 2, 3, 5
.
6, 6, 1, 2, 3, 4, 5
→6, 7, 1, 2, 3, 4, 5