Вступ
За визначенням, унікальні ідентифікатори повинні бути унікальними. Наявність декількох однакових ідентифікаторів призводить до отримання несподіваних даних. Але за даними, що надходять одночасно з декількох джерел, може бути важко забезпечити унікальність. Введіть функцію, яка уніфікує список ідентифікаторів.
Це, можливо, найгірший пазл, який я написав, але ви розумієте.
Вимоги
Давши список нульових чи більше додатних цілих чисел, застосуйте такі правила до кожного числа від першого до останнього:
- Якщо число є першим у своєму роді, зберігайте його.
- Якщо раніше зустрічалося число, замініть його найнижчим позитивним цілим числом, яке не зустрічається ніде у всьому списку вводу або будь-якому наявному виході.
Для рішення:
- Рішенням може бути програма або функція.
- Вхід може представляти собою рядок, масив, переданий як аргументи, або введення з клавіатури.
- Виходом може бути рядок, масив або надрукований на екран.
- Усі номери у списку вихідних даних є різними.
Припущення
- Список вводу чистий. Він містить лише додатні цілі числа.
- Позитивне ціле число має діапазон від 1 до 2 31 -1.
- Для змінних вашої програми доступно менше 256 Мб пам'яті. (В основному не дозволяється використовувати массиви 2147 483 648 елементів.)
Випробування
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
Оцінка балів
Просто простий гольф з кодом. Найнижча кількість байтів до цього часу виграє наступного тижня.
6, 6, ...
давати 6, 1, ...
?
6, 6, 4, 4, 2, 2
Тестовий випадок підтверджує тлумачення Адама: очікуваний вихід є 6, 1, 4, 3, 2, 5
, а ні 6, 1, 4, 2, 3, 5
.
6, 6, 1, 2, 3, 4, 5
→6, 7, 1, 2, 3, 4, 5