Todos nós estamos familiarizados com a sequência de Fibonacci :
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765
No entanto, em vez de, f(n) = f(n-1) + f(n-2)
tomaremos a soma digital das 2 entradas anteriores.
A sequência ainda deve começar 0, 1
, depois que as diferenças são rapidamente aparentes. Esta lista é indexada em 0; você também pode usar a indexação em 1, indicando o estado que usou.
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: Eu não notei a repetição até postar o desafio em si, e aqui estava pensando que seria impossível escrever outro novo desafio de Fibonacci.
Sua tarefa é, com um número n
, gerar o enésimo dígito dessa sequência.
3 primeiros dígitos: [0,1,1]
,
Padrão repetido de 24 dígitos: [2,3,5,8,13,12,7,10,8,9,17,17,16,15,13,10,5,6,11,8,10,9,10,10]
Dica: você pode explorar essa repetição para sua vantagem.
Este é o código-golfe , o menor número de bytes é o vencedor.
BÔNUS: Se você usar a repetição em sua resposta, atribuirei à resposta de contagem de bytes mais baixa que aproveita a repetição na sequência uma recompensa de 100 pontos. Isso deve ser enviado como parte da sua resposta original, depois da resposta original. Veja este post como um exemplo do que estou falando: https://codegolf.stackexchange.com/a/108972/59376
Para se qualificar para esse bônus, seu código deve ser executado em tempo constante ( O(1)
) com uma explicação.
Vencedor do bônus: Dennis https://codegolf.stackexchange.com/a/108967/59376 <Dennis venceu.
Implementação mais exclusiva: https://codegolf.stackexchange.com/a/108970/59376
(Também receberá 100 pontos, finalizados após a escolha da resposta correta)
%24
a uma solução "normal"?
O(1)
. Seu código deve estar em execução em tempo constante, se estiver realmente explorando a repetição.