Un número está en forma de Goodstein simplificada en base-b si está escrito como
b + b + ... + b + c, 0 < c ≤ b
La secuencia simplificada de Goodstein de un número comienza escribiendo el número en la forma simplificada de Goodstein de base 1, luego reemplazando todos los 1 con 2 y restando 1. Vuelva a escribir el resultado en la forma simplificada de Goodstein de base 2, luego reemplace los 2 con 3 y reste 1 , etc. hasta llegar a 0.
Su programa debe tomar una entrada entera positiva y generar / imprimir su secuencia de Goodstein y terminar. Su programa debe manejar números menores que 100, aunque no puede finalizar en un período de tiempo razonable.
Por ejemplo, dado 3 como entrada, su programa debería salir (el lado derecho es solo una explicación)
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
El espacio no importa.
Criterio ganador:
Este es el código de golf . El código más corto gana.
Respuestas:
05AB1E , 19 bytes
También podría reorganizarse como
>Å1[ND>:`Ž<)0KD'+ý,
Pruébalo en línea!
Explicación
fuente
Python 2,
7774 bytes-3 bytes gracias a Lynn
Pruébalo en línea!
Se ejecuta fácilmente hasta n = 100 (aunque el resultado es demasiado largo para mostrarlo completamente).
fuente
n=input()
b=1
while n:…
n+=n/b-1;b+=1
. 74 byteswhile
siguiente a;
. Supongo que esto se debe a que si la línea se inicia conwhile
cada una de las siguientes afirmaciones (separadas por punto y coma) se considera dentro de su alcance del tiempo y el comportamiento sería ambiguo o al menos algo opacoPyth , 29 bytes
Pruébalo aquí!
fuente
Mathematica, 123 bytes
Pruébalo en línea!
fuente
Python 3, 155 bytes
Esto puede ser reformateado en
fuente
1+1+...
, y tenga en cuenta que su programa debe manejar cualquier entrada entera positiva.+
.-~x
tiene el mismo valor quex+1
, pero no necesita ponerlo entre paréntesis, ya que unary-
(negación) y unary~
(negación a nivel de bits) tienen una prioridad más alta que*
. En tu caso[1]*-~n
es igual a[1]*(n+1)
.Javascript ES6, 121 caracteres
fuente
Perl 5 , 71 bytes
Pruébalo en línea!
fuente