Напишите программу или именованную функцию, которая будет выводить или возвращать последовательность с точностью до n
целого числа в последовательности Iccanobif, задокументированной в OEIS как A014258 . Обратите внимание, что только нулевой элемент в sequence ( 0
) будет напечатан, если n
равен нулю.
Последовательность генерируется, начиная со стандартной последовательности Фибоначчи, но после добавления двух предыдущих чисел вы переворачиваете результат и отбрасываете все ведущие нули. Интересный факт, по крайней мере для меня, заключается в том, что эта последовательность не увеличивается строго (см. Список ниже). Кажется также, что она (и, вероятно, есть) строго больше или равна последовательности Фибоначчи.
Ввод вашей программы должен быть целым числом.
Первые 20 номеров последовательности приведены здесь для вашего удобства просмотра:
0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297, 8964541, 8389769
Стандартные лазейки запрещены.
Кратчайшая программа выигрывает.
РЕДАКТИРОВАТЬ: Добавлено примечание, чтобы уточнить, что последовательность начинается с нулевого элемента и должна быть включена, если n
равен нулю.
Примеры возможностей ввода / вывода:
0 -> 0
1 -> 0 1
6 -> 0 1 1 2 3 5 8
17 -> [0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297]
Теперь, когда есть несколько ответов, ниже приведены мои реализации в Python 2, которые я усердно скрывал с помощью разметки:
Повторяющийся:
# Закрыть для моей начальной программы. 73 байта. Следует также отметить, что эта программа не может достичь переполнения стека. Он работает для n = 5000 менее чем за 10 секунд.i,a,b=input(),0,1 print a while i:print b;i,a,b=i-1,b,int(str(a+b)[::-1])
рекурсивные:
# Обратите внимание, что это печатаетn
завершающие символы новой строки. 64 байта. Будет ошибка переполнения стека для больших значений n.def f(n,i=0,j=1):print i,n and f(n-1,j,int(str(i+j)[::-1]))or'';