Napisz program lub nazwaną funkcję, która wyświetli lub zwróci sekwencję do n
czwartej liczby całkowitej w sekwencji Iccanobif, udokumentowanej w OEIS jako A014258 . Zauważ, że tylko zero elementu w sekwencji ( 0
) zostanie wydrukowane, jeśli n
wynosi zero.
Sekwencję generuje się, zaczynając od standardowej sekwencji Fibonacciego, ale po dodaniu dwóch poprzednich liczb odwracasz wynik i upuszczasz zera wiodące. Ciekawym faktem, przynajmniej dla mnie, jest to, że ta sekwencja nie zwiększa się ściśle (patrz lista poniżej). Wydaje się również, że jest (i prawdopodobnie jest) ściśle większa lub równa sekwencji Fibonacciego.
Dane wejściowe programu muszą być liczbą całkowitą.
Pierwsze 20 numerów sekwencji podano tutaj dla Twojej przyjemności oglądania:
0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297, 8964541, 8389769
Standardowe luki są zabronione.
Najkrótszy program wygrywa.
EDYCJA: Dodano notatkę wyjaśniającą, że sekwencja zaczyna się od elementu zerowego i powinna być uwzględniona, jeśli n
wynosi zero.
Przykładowe możliwości IO:
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]
Teraz, gdy jest kilka odpowiedzi, poniżej są moje implementacje w Pythonie 2, które ciężko pracowałem, aby ukryć za pomocą znaczników:
Wielokrotny:
# Najbliżej mojego początkowego programu. 73 bajty. Należy również zauważyć, że ten program nie można osiągnąć przepełnienia stosu. Działa przez n = 5000 w mniej niż 10 sekund.i,a,b=input(),0,1 print a while i:print b;i,a,b=i-1,b,int(str(a+b)[::-1])
Rekurencyjne:
# Zauważ, że to drukujen
końcowe znaki nowej linii. 64 bajty. Uderzy błąd przepełnienia stosu dla dużych wartości n.def f(n,i=0,j=1):print i,n and f(n-1,j,int(str(i+j)[::-1]))or'';