Um número está no formato Goodstein simplificado da base-b se for escrito como
b + b + ... + b + c, 0 < c ≤ b
A sequência simplificada de um número de Goodstein começa com a escrita do número na forma simplificada de base 1, substituindo todos os 1 por 2 e subtraindo 1. Reescreva o resultado na forma simplificada de base 2, substitua todos os 2 por 3 e subtraia 1 etc. até chegar a 0.
Seu programa é pegar uma entrada inteira positiva e imprimir / imprimir sua sequência Goodstein e terminar. Seu programa deve lidar com números inferiores a 100, embora possa não terminar em um período de tempo razoável.
Por exemplo, dado 3 como entrada, seu programa deve ser exibido (o lado direito é apenas uma explicação)
1 + 1 + 1 | 3 = 1 + 1 + 1
2 + 2 + 1 | Change 1's to 2's, then subtract 1. (2 + 2 + 2 - 1 = 2 + 2 + 1)
3 + 3 | 3 + 3 + 1 - 1 = 3 + 3
4 + 3 | 4 + 4 - 1 = 4 + 3
5 + 2 | 5 + 3 - 1 = 5 + 2
6 + 1 | 6 + 2 - 1 = 6 + 1
7 | 7 + 1 - 1 = 7
7 | 8 - 1 = 7
6 | Numbers are now lower than the base, so just keep subtracting 1.
5 |
4 |
3 |
2 |
1 |
0 | End
O espaçamento não importa.
Critério de vitória:
Isso é código-golfe . O menor código vence.
Respostas:
05AB1E , 19 bytes
Também pode ser reorganizado como
>Å1[ND>:`Ž<)0KD'+ý,
Experimente online!
Explicação
fonte
Python 2,
7774 bytes-3 bytes graças a Lynn
Experimente online!
É executado facilmente até n = 100 (embora a saída seja muito longa para a exibição completa).
fonte
n=input()
b=1
while n:…
n+=n/b-1;b+=1
. 74 byteswhile
seguinte a;
. Eu acho que isso é porque se a linha é iniciado com umawhile
declaração de cada seguinte (separados por ponto e vírgula) é considerado dentro do seu escopo do tempo e do comportamento seria ambíguo ou pelo menos um pouco opacoPitão , 29 bytes
Experimente aqui!
fonte
Mathematica, 123 bytes
Experimente online!
fonte
Python 3, 155 bytes
Isso pode ser reformatado em
fonte
1+1+...
e observe que seu programa deve lidar com qualquer entrada inteira positiva.+
.-~x
tem o mesmo valor quex+1
, mas você não precisa colocá-lo entre parênteses, pois unário-
(negação) e unário~
(negação bit a bit) têm uma precedência mais alta que*
. No seu caso[1]*-~n
é igual a[1]*(n+1)
.Javascript ES6, 121 caracteres
fonte
Perl 5 , 71 bytes
Experimente online!
fonte