Дозволяє визначити послідовність покажчиків , щоб бути будь-якою послідовністю таким чином, що а (п) = а ((п-1) - (а (п-1))) FORALL п більше деякого кінцевого числа. Наприклад, якщо наша послідовність розпочалася з
3 2 1
Наступним нашим терміном буде 2, тому що a (n-1) = 1 , (n-1) -1 = 1 , a (1) = 2 (цей приклад - нульовий індекс, проте не має значення, для якого індексу ви використовуєте обчислення завжди бути однаковим.). Якщо ми повторимо процес, отримаємо нескінченну послідовність
3 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2
Завдання
З огляду на деякий початковий масив додатних цілих чисел вивести послідовність покажчиків, починаючи з цього масиву.
Типи виводу
Вихідні дані повинні бути гнучкими, якщо ви вирішите записати функцію як програму, яку вона може повернути, або нескінченний список цілих чисел, або функцію, яка індексує послідовність. Якщо ви вирішите написати повну програму, ви можете виводити умови послідовності безстроково.
Ви також можете взяти два входи, початковий масив та індекс. Якщо ви вирішите це зробити, вам потрібно лише вивести термін послідовності в цьому індексі.
Вам ніколи не буде надана послідовність, яка потребує індексації до початку послідовності. Наприклад 3, не є дійсним введенням, тому що вам потрібні терміни до, 3щоб вирішити наступний термін.
Це код-гольф, тому ваш рахунок буде кількістю байтів у вашій програмі, а нижчий бал буде кращим.
Випробування
тестові випадки усічені для простоти
2 1 -> 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 ...
2 3 1 -> 2 3 1 3 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 ...
3 3 1 -> 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 ...
4 3 1 -> 4 3 1 3 4 4 3 3 4 4 4 3 4 4 4 4 3 4 4 4 4 3 4 4 4 4 3 4 ...