Conosciamo tutti la sequenza di Fibonacci :
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765
Tuttavia, invece di, f(n) = f(n-1) + f(n-2)
prenderemo la somma digitale delle precedenti 2 voci.
La sequenza dovrebbe comunque iniziare con 0, 1
, dopo che le differenze sono rapidamente evidenti. Questo elenco è indicizzato 0, è possibile utilizzare anche 1 indicizzato, stato utilizzato.
f(0) = 0
f(1) = 1
f(2) = 1 # 0 + 1
f(3) = 2 # 1 + 1
f(4) = 3 # 1 + 2
f(5) = 5 # 2 + 3
f(6) = 8 # 3 + 5
f(7) = 13 # 8 + 5
f(8) = 12 # 8 + 1 + 3
f(9) = 7 # 1 + 3 + 1 + 2
f(10) = 10 # 1 + 2 + 7
f(11) = 8 # 7 + 1 + 0
f(12) = 9 # 1 + 0 + 8
f(13) = 17 # 8 + 9
f(14) = 17 # 9 + 1 + 7
f(15) = 16 # 1 + 7 + 1 + 7
f(16) = 15 # 1 + 7 + 1 + 6
f(17) = 13 # 1 + 6 + 1 + 5
f(18) = 10 # 1 + 5 + 1 + 3
f(19) = 5 # 1 + 3 + 1 + 0
f(20) = 6 # 1 + 0 + 5
f(21) = 11 # 5 + 6
f(22) = 8 # 6 + 1 + 1
f(23) = 10 # 1 + 1 + 8
f(24) = 9 # 8 + 1 + 0
f(25) = 10 # 1 + 0 + 9
f(26) = 10 # 9 + 1 + 0
f(27) = 2 # 1 + 0 + 1 + 0
(After this point it repeats at the 3rd term, 0-indexed)
Nota: non ho notato la ripetizione fino a quando non ho pubblicato la sfida stessa, e qui stavo pensando che sarebbe stato impossibile scrivere un'altra nuova sfida di Fibonacci.
Alla tua attività viene assegnato un numero n
e genera l'ennesima cifra di questa sequenza.
Le prime 3 cifre: [0,1,1]
,
Schema ripetuto a 24 cifre: [2,3,5,8,13,12,7,10,8,9,17,17,16,15,13,10,5,6,11,8,10,9,10,10]
Suggerimento: potresti essere in grado di sfruttare questa ripetizione a tuo vantaggio.
Questo è code-golf , il conteggio di byte più basso è il vincitore.
BONUS: Se usi la ripetizione nella tua risposta, assegnerò alla risposta di conteggio byte più bassa che sfrutta la ripetizione nella sequenza un premio di 100 punti. Questo dovrebbe essere inviato come parte della risposta originale, dopo la risposta originale. Vedi questo post come esempio di ciò di cui sto parlando: https://codegolf.stackexchange.com/a/108972/59376
Per beneficiare di questo bonus, il codice deve essere eseguito a tempo costante ( O(1)
) con una spiegazione.
Vincitore del bonus: Dennis https://codegolf.stackexchange.com/a/108967/59376 <Dennis ha vinto.
Implementazione più unica: https://codegolf.stackexchange.com/a/108970/59376
(Inoltre riceverà 100 punti, finalizzato dopo aver scelto la risposta corretta)
%24
a una soluzione "normale"?
O(1)
. Il tuo codice dovrebbe essere in esecuzione a tempo costante, se sta sfruttando veramente la ripetizione.