(Cela peut être assez classique mais c'est mon premier post ici, donc je ne suis pas encore prêt pour les trucs de fantaisie)
La séquence de Goodstein est définie pour un numéro d'entrée comme suit:
Choisissez un nombre de départ n , soit b = 2 et répétez:
- écrire n en notation b de base hériditaire
- substituer tous les ( b ) s à ( b +1) s dans n et soustraire 1
- sortie la nouvelle évaluation décimale de n
- incrément b
La notation de base héréditaire est une décomposition d'un nombre où la base est le plus grand nombre à apparaître. Exemples:
83
dans HB3:3^(3+1)+2
226
en HB2:2^(2^(2+1))+2^(2+1)+2
Les séquences de Goodstein finissent toujours à 0 , mais elles ont tendance à devenir assez grandes assez rapidement, il n'est donc pas demandé de sortir la séquence complète.
Tâche:
Étant donné un numéro d'entrée dans un format raisonnable, votre travail consiste à sortir la séquence de Goodstein pour ce nombre au moins jusqu'à ce qu'il atteigne 10 ^ 25 ou 0
Exemples:
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
Détails:
- Le numéro d'entrée peut être un tableau, une chaîne, un entier, tant qu'il est en base décimale
- La sortie suit la même règle
- La séparation des termes dans la sortie peut être des espaces, des sauts de ligne ou toute séparation raisonnable
- Dès que la séquence dépasse 10 ^ 25, votre programme peut se fermer normalement, lever une erreur / exception ou continuer (aucune restriction)
- Il s'agit de code-golf , donc la réponse la plus courte (en octets) l'emporte
- Bien sûr, les échappatoires standard sont interdites
- Exemple de travail non golfé en Python ici
int(q/base.b), q%base.b
doit l'être q//base.b, q%base.b
(ou simplement divmod(q, base.b)
) pour éviter les erreurs en virgule flottante.