Фон
Розглянемо послідовність, визначену так:
- Перший елемент дорівнює 0;
- Другий елемент - 4;
- Від третього елемента і далі його значення можна обчислити:
- Прийом набору цілих чисел від 0 до попереднього елемента послідовності (включно або виключно, це не має значення);
- Видалення з набору будь-яких цілих чисел, які вже з'явилися раніше в послідовності;
- Додавання решти елементів набору; це значення, яке ви хочете.
Цікаво, що ця послідовність, здається, ще не існує на OEIS .
Завдання
Напишіть програму або функцію, яка приймає ціле число n як вхідний і виводить n- й елемент послідовності.
Тестові справи
Першими кількома елементами послідовності є:
- 0
- 4
- 6 (1 + 2 + 3)
- 11 (1 + 2 + 3 + 5)
- 45 (1 + 2 + 3 + 5 + 7 + 8 + 9 + 10)
- 969 (1 + 2 + 3 + 5 + 7… 10 + 12… 44)
- 468930 (1 + 2 + 3 + 5 + 7… 10 + 12… 44 + 46… 968)
Роз'яснення
- Ваша програма теоретично повинна вміти обробляти довільну n, якщо вона працює на варіанті вашої мови, що має необмежено великі цілі числа та доступ до необмеженої кількості пам'яті. (Мови без бінгутів навряд чи зможуть отримати набагато більше 468930, але це не привід для жорсткого кодування відповідей.)
- Ви можете вибрати індексацію на основі 0 або 1 для послідовності (наприклад, вирішувати, чи n = 1 повертає перший елемент, n = 2 другий елемент тощо), чи повертає n = 0 перший елемент , n = 1 другий елемент тощо).
- Немає жодних вимог щодо використовуваного алгоритму, а також щодо його ефективності; ви можете реалізувати визначення послідовності безпосередньо (навіть якщо це дійсно неефективно), а також ви можете реалізувати інший алгоритм, що призводить до однакових результатів.
Стан перемоги
Це код-гольф , тому виграє найкоротша правильна програма, виміряна в байтах.