Un nombre est en forme Goodstein simplifiée en base-b s'il est écrit comme
b + b + ... + b + c, 0 < c ≤ b
La séquence Goodstein simplifiée d'un nombre commence par l'écriture du nombre sous la forme Goodstein simplifiée en base 1, puis en remplaçant tous les 1 par 2 et en soustrayant 1. Réécrivez le résultat sous la forme Goodstein simplifiée en base 2, puis remplacez tous les 2 par 3 et soustrayez 1 , etc. jusqu'à ce que vous atteigniez 0.
Votre programme doit prendre une entrée entière positive et sortir / imprimer sa séquence Goodstein et terminer. Votre programme doit gérer des nombres inférieurs à 100, bien qu'il ne puisse pas se terminer dans un délai raisonnable.
Par exemple, étant donné 3 comme entrée, votre programme devrait sortir (le côté droit est juste une explication)
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
L'espacement n'a pas d'importance.
Critère gagnant:
C'est du code-golf . Le code le plus court gagne.
Réponses:
05AB1E , 19 octets
Pourrait également être réorganisé comme
>Å1[ND>:`Ž<)0KD'+ý,
Essayez-le en ligne!
Explication
la source
Python 2,
7774 octets-3 octets grâce à Lynn
Essayez-le en ligne!
Fonctionne facilement jusqu'à n = 100 (bien que la sortie soit trop longue pour être entièrement affichée).
la source
n=input()
b=1
while n:…
n+=n/b-1;b+=1
. 74 octetswhile
suivant a;
. Je suppose que cela est dû au fait que si la ligne est démarrée avec unewhile
déclaration suivante (séparée par des points-virgules), elle est considérée à l'intérieur de sa portée et le comportement serait ambigu ou au moins quelque peu opaquePyth , 29 octets
Essayez-le ici!
la source
Mathematica, 123 octets
Essayez-le en ligne!
la source
Python 3, 155 octets
Cela peut être reformaté en
la source
1+1+...
, et notez que votre programme est censé gérer toute entrée entière positive.+
.-~x
a la même valeur quex+1
, mais vous n'avez pas besoin de la mettre entre parenthèses, car unaire-
(négation) et unaire~
(négation au niveau du bit) ont une priorité plus élevée que*
. Dans votre cas[1]*-~n
est égal à[1]*(n+1)
.Javascript ES6, 121 caractères
la source
Perl 5 , 71 octets
Essayez-le en ligne!
la source