Einführung
Per Definition sollten eindeutige Bezeichner eindeutig sein. Wenn mehrere Identifikatoren identisch sind, ruft einer unerwartete Daten ab. Bei Daten, die gleichzeitig aus mehreren Quellen eingehen, kann es jedoch schwierig sein, die Eindeutigkeit sicherzustellen. Schreiben Sie eine Funktion, die eine Liste von Bezeichnern eindeutig macht.
Dies ist möglicherweise der schlimmste Puzzle-Flaum, den ich geschrieben habe, aber Sie haben die Idee.
Bedarf
Wenden Sie bei einer Liste mit null oder mehr positiven ganzen Zahlen die folgenden Regeln auf jede Zahl vom ersten bis zum letzten an:
- Wenn die Nummer die erste ihrer Art ist, bewahren Sie sie auf.
- Wenn die Zahl bereits einmal angetroffen wurde, ersetzen Sie sie durch die niedrigste positive Ganzzahl, die in der gesamten Eingabeliste oder einer vorhandenen Ausgabe nicht vorhanden ist.
Für die Lösung:
- Die Lösung kann ein Programm oder eine Funktion sein.
- Die Eingabe kann eine Zeichenfolge, ein als Argument übergebenes Array oder eine Tastatureingabe sein.
- Die Ausgabe kann eine Zeichenfolge, ein Array oder ein Ausdruck auf dem Bildschirm sein.
- Alle Zahlen in der Ausgabeliste sind unterschiedlich.
Annahmen
- Die Eingabeliste ist sauber. Es enthält nur positive ganze Zahlen.
- Eine positive ganze Zahl hat den Bereich von 1 bis 2 31 -1.
- Für die Variablen Ihres Programms sind weniger als 256 MB Speicher verfügbar. (Grundsätzlich sind keine Arrays mit 2.147.483.648 Elementen zulässig.)
Testfälle
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
Wertung
Nur ein einfacher Code Golf. Die niedrigste Byteanzahl von dieser Zeit nächste Woche gewinnt.
6, 6, ...
geben 6, 1, ...
?
6, 6, 4, 4, 2, 2
Testfall bestätigt Adáms Interpretation: Die erwartete Ausgabe ist 6, 1, 4, 3, 2, 5
und nicht 6, 1, 4, 2, 3, 5
.
6, 6, 1, 2, 3, 4, 5
→6, 7, 1, 2, 3, 4, 5