Фон
Більшість усіх знайомі з числами Фібоначчі F(n)
:
0, 1, 1, 2, 3, 5, 8, 13, 21 ...
Вони утворені функцією рекурсії F(n) = F(n-1) + F(n-2)
з F(0)=0
і F(1)=1
. A000045
Тісно пов'язана послідовність номерів Лукаса L(m)
:
2, 1, 3, 4, 7, 11, 18, 29 ...
Вони утворені функцією рекурсії L(m) = L(m-1) + L(m-2)
з L(0)=2
і L(1)=1
. A000032
Ми можемо чергувати дві послідовності на основі парних / непарних індексів, з побудовою,
A(x) = F(x)
якщо x mod 2 = 0
і A(x) = L(x)
інше. Наприклад, A(4)
дорівнює F(4)
з 4 mod 2 = 0
. Ми будемо називати цю послідовність в Lucas-nacci Числа , A(x)
:
0, 1, 1, 4, 3, 11, 8, 29, 21, 76 ...
Це може бути сформовано з допомогою функції рекурсії A(x) = 3*A(x-2) - A(x-4)
з A(0)=0
, A(1)=1
, A(2)=1
і A(3)=4
. A005013
Виклик
Задавши введення n
, виведіть послідовність n+1
чисел до та включаючи, A(n)
як описано вище. Виграє найменше байт (або еквівалентів байтів, наприклад, для LabVIEW , визначених індивідуально на Meta).
Вхідні дані
Єдине невід'ємне ціле число n
.
Вихідні дані
Список номерів, які відповідають послідовності чисел Лукаса-Начі від A(0)
до A(n)
. Список повинен бути у послідовному порядку, як описано вище.
Правила
- Застосовуються стандартні правила коду-гольфу та обмеження лазівки .
- Застосовуються стандартні правила введення / виводу .
- Номер введення може бути у будь-якому підходящому форматі: одинарний або десятковий, зчитувати з STDIN, аргумент функції або командного рядка тощо - на ваш вибір.
- Вихід може бути надрукований в STDOUT або повернутий в результаті виклику функції. Якщо вони надруковані, повинні бути включені відповідні роздільники для розмежування чисел (розділені пробілами, розділені комами тощо).
- Крім того, якщо вихід у режим STDOUT, навколишній пробіл, трейлінг нового рядка тощо не є обов'язковим.
- Якщо вхід є не цілим чи від'ємним цілим числом, програма може зробити що-небудь або нічого, оскільки поведінка не визначена.
Приклади
Input -> Output
0 -> 0
5 -> 0, 1, 1, 4, 3, 11
18 -> 0, 1, 1, 4, 3, 11, 8, 29, 21, 76, 55, 199, 144, 521, 377, 1364, 987, 3571, 2584