Фон
Фрактальна послідовність являє собою ціле число послідовностей , де можна видалити перше входження будь-якого цілого і в кінцевому підсумку з тієї ж самої послідовністю , як і раніше.
Дуже проста така послідовність називається парафразами Кімберлінга . Ви починаєте з натуральних натуральних чисел:
1, 2, 3, 4, 5, 6, 7, 8, 9, ...
Тоді ви наріжете кілька заготовок:
1, _, 2, _, 3, _, 4, _, 5, _, 6, _, 7, _, 8, _, 9, ...
А потім ви кілька разів заповнюєте заготовки самою послідовністю (включаючи пробіли):
1, 1, 2, _, 3, 2, 4, _, 5, 3, 6, _, 7, 4, 8, _, 9, ...
1, 1, 2, 1, 3, 2, 4, _, 5, 3, 6, 2, 7, 4, 8, _, 9, ...
1, 1, 2, 1, 3, 2, 4, 1, 5, 3, 6, 2, 7, 4, 8, _, 9, ...
1, 1, 2, 1, 3, 2, 4, 1, 5, 3, 6, 2, 7, 4, 8, 1, 9, ...
Ось наша фрактальна послідовність! Тепер візьмемо часткові суми:
1, 2, 4, 5, 8, 10, 14, 15, 20, 23, 29, 31, 38, 42, 50, 51, 60, ...
Але що робити, якщо ми повторимо цей процес? "Фракталізація" нової послідовності (тобто часткові суми, отримані за кроками вище):
1, _, 2, _, 4, _, 5, _, 8, _, 10, _, 14, _, 15, _, 20, _, 23, ...
1, 1, 2, _, 4, 2, 5, _, 8, 4, 10, _, 14, 5, 15, _, 20, 8, 23, ...
1, 1, 2, 1, 4, 2, 5, _, 8, 4, 10, 2, 14, 5, 15, _, 20, 8, 23, ...
1, 1, 2, 1, 4, 2, 5, 1, 8, 4, 10, 2, 14, 5, 15, _, 20, 8, 23, ...
1, 1, 2, 1, 4, 2, 5, 1, 8, 4, 10, 2, 14, 5, 15, 1, 20, 8, 23, ...
І знову взяти часткові суми:
1, 2, 4, 5, 9, 11, 16, 17, 25, 29, 39, 41, 55, 60, 75, 76, 96, ...
Промийте, повторіть. Виявляється, цей процес сходиться. Кожен раз, коли ви повторите цей процес, більший префікс послідовності залишатиметься виправленим. Після нескінченної кількості ітерацій, ви закінчитеся з OEIS A085765 .
Забавний факт: Цей процес сходився б до тієї ж послідовності, навіть якщо ми не починалися з натуральних чисел до тих пір, поки починається початкова послідовність 1
. Якщо початкова послідовність починається з будь-якої іншої x
, ми отримаємо x*A085765
натомість.
Змагання
Давши додатне ціле число N
, виведіть цей N
елемент зведеної послідовності.
Ви можете написати програму або функцію, взявши вхід через STDIN (або найближчу альтернативу), аргумент командного рядка або аргумент функції та вивівши результат через STDOUT (або найближчу альтернативу), значення повернення функції або параметр функції (out).
Ви можете вибрати, чи N
базується індекс на 0 або 1.
Випробування
Послідовність починається з:
1, 2, 4, 5, 9, 11, 16, 17, 26, 30, 41, 43, 59, 64, 81, 82, 108, 117, 147, 151, 192, 203, 246, 248, 307, 323, 387, 392, 473, 490, 572, 573, 681, 707, 824, 833, 980, 1010, 1161, 1165, 1357, 1398, 1601, 1612, 1858, 1901, 2149, 2151, 2458, 2517
Тож введення 5
має спричинити вихід 9
.
Ось наївна реалізація CJam, яка генерує перші N
числа (наведені N
на STDIN). Зауважте, що ваш код повинен повертати лише цей N
елемент, а не весь префікс.
N
термін A085765 , правда?