Scrivi un programma o una funzione con nome che genererà o restituirà la sequenza fino al n
numero intero nella sequenza Iccanobif, documentato su OEIS come A014258 . Si noti che 0
verrà stampato solo l'elemento zeroth nella sequenza ( ) se n
è zero.
La sequenza viene generata iniziando come la sequenza standard di Fibonacci, ma dopo aver aggiunto i due numeri precedenti, capovolgi il risultato e rilasci eventuali zeri iniziali. Un fatto interessante, almeno per me, è che questa sequenza non è strettamente crescente (vedi la lista qui sotto). Sembra anche essere (e probabilmente lo è) strettamente maggiore o uguale alla sequenza di Fibonacci.
L'input del tuo programma deve essere un numero intero.
I primi 20 numeri della sequenza sono forniti qui per il tuo piacere di visione:
0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297, 8964541, 8389769
Sono vietate le scappatoie standard.
Vince il programma più breve.
EDIT: aggiunta una nota per chiarire che la sequenza inizia con l'elemento zeroth e dovrebbe essere inclusa se n
è zero.
Esempio di possibilità 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]
Ora che ci sono diverse risposte, di seguito sono riportate le mie implementazioni in Python 2 che ho lavorato duramente per nascondere con il markup:
Iterativo:
# Più vicino al mio programma iniziale. 73 byte. Va anche notato che questo programma impossibile raggiungere un overflow dello stack. Funziona per n = 5000 in meno di 10 secondi.i,a,b=input(),0,1 print a while i:print b;i,a,b=i-1,b,int(str(a+b)[::-1])
Ricorsivo:
# Notare che questo stampan
nuove righe finali. 64 byte. Colpirà un errore di overflow dello stack per valori elevati di n.def f(n,i=0,j=1):print i,n and f(n-1,j,int(str(i+j)[::-1]))or'';