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, 2test case conferma l'interpretazione di Adám: l'output previsto è 6, 1, 4, 3, 2, 5e non 6, 1, 4, 2, 3, 5.
6, 6, 1, 2, 3, 4, 5→6, 7, 1, 2, 3, 4, 5