(Isso pode ser bastante clássico, mas este é o meu primeiro post aqui, então ainda não estou pronto para as coisas chiques)
A sequência Goodstein é definida para um número de entrada da seguinte maneira:
Escolha um número inicial n , deixe b = 2 e repita:
- escreva n na notação b da base heriditária
- substitua todos os ( b ) sa ( b +1) s no ne substrato 1
- produz a nova avaliação decimal de n
- incremento b
A notação de base hereditária é uma decomposição de um número em que a base é o número maior a aparecer. Exemplos:
83
no HB3:3^(3+1)+2
226
no HB2:2^(2^(2+1))+2^(2+1)+2
As seqüências de Goodstein sempre terminam em 0 , mas tendem a ficar grandes muito rapidamente, portanto, não é solicitado que você produza a sequência completa.
Tarefa:
Dado um número de entrada em qualquer formato razoável, seu trabalho é produzir a sequência Goodstein para esse número pelo menos até atingir 10 ^ 25 ou 0
Exemplos:
Input: 3
Output: 3, 3, 3, 2, 1, 0
Input: 13
Output: 13, 108, 1279, 16092, 280711, 5765998, 134219479, 3486786855, 100000003325, 3138428381103, 106993205384715, 3937376385706415, 155568095557821073, 6568408355712901455, 295147905179352838943, 14063084452067725006646, 708235345355337676376131, 37589973457545958193377292
Input: 38
Output: 38, 22876792454990
Detalhes:
- O número de entrada pode ser uma matriz, uma sequência, um número inteiro, desde que esteja na base decimal
- A saída segue a mesma regra
- A separação dos termos na saída pode ser espaços, novas linhas ou qualquer separação razoável
- Assim que a sequência for maior que 10 ^ 25, seu programa poderá sair normalmente, gerar um erro / exceção ou continuar (sem restrição)
- Isso é código-golfe , então a resposta mais curta (em bytes) vence
- Obviamente, são proibidas brechas comuns
- Exemplo de trabalho ungolfed Python aqui
int(q/base.b), q%base.b
precisa ser q//base.b, q%base.b
(ou simplesmente divmod(q, base.b)
) para evitar erros de ponto flutuante.