Wprowadzenie
Z definicji unikalne identyfikatory powinny być unikalne. Posiadanie wielu identycznych identyfikatorów powoduje pobieranie nieoczekiwanych danych. Jednak przy równoczesnym napływaniu danych z wielu źródeł zapewnienie jednoznaczności może być trudne. Napisz funkcję, która ujednolica listę identyfikatorów.
To chyba najgorszy puch puzzli, jaki napisałem, ale masz pomysł.
Wymagania
Biorąc pod uwagę listę zerowych lub więcej dodatnich liczb całkowitych, zastosuj następujące reguły do każdej liczby od pierwszej do ostatniej:
- Jeśli numer jest pierwszym w swoim rodzaju, zachowaj go.
- Jeśli liczba została wcześniej napotkana, zamień ją na najniższą dodatnią liczbę całkowitą, której nie znaleziono nigdzie na całej liście danych wejściowych ani na żadnym istniejącym wyjściu.
Dla rozwiązania:
- Rozwiązaniem może być program lub funkcja.
- Dane wejściowe mogą być łańcuchem, tablicą przekazywaną jako argumenty lub dane wejściowe z klawiatury.
- Wynik może być łańcuchem, tablicą lub wydrukowany na ekranie.
- Wszystkie liczby na liście wyników są różne.
Założenia
- Lista wejściowa jest czysta. Zawiera tylko dodatnie liczby całkowite.
- Dodatnia liczba całkowita ma zakres od 1 do 2 31 -1.
- Mniej niż 256 MB pamięci jest dostępne na zmienne programu. (Zasadniczo niedozwolone są 2 147 483 648 elementów).
Przypadki testowe
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
Punktacja
Po prostu prosty golf. Najniższa liczba bajtów do tego czasu wygrywa w przyszłym tygodniu.
6, 6, ...
dawać 6, 1, ...
?
6, 6, 4, 4, 2, 2
Przypadek testowy potwierdza interpretację Adáma : oczekiwany wynik to 6, 1, 4, 3, 2, 5
, a nie 6, 1, 4, 2, 3, 5
.
6, 6, 1, 2, 3, 4, 5
→6, 7, 1, 2, 3, 4, 5