(Questo potrebbe essere abbastanza classico ma questo è il mio primo post qui, quindi non sono ancora pronto per le cose fantasiose)
La sequenza di Goodstein è definita per un numero di input come segue:
Scegli un numero iniziale n , lascia che b = 2 e ripeti:
- scrittura n della base ereditari b notazione
- sostituire tutte le ( b ) s ( b +1) s in n e sottrarre 1
- emette la nuova valutazione decimale di n
- incremento b
La notazione di base ereditaria è una decomposizione di un numero in cui la base è il numero più grande da visualizzare. Esempi:
83in HB3:3^(3+1)+2226in HB2:2^(2^(2+1))+2^(2+1)+2
Le sequenze di Goodstein finiscono sempre a 0 , ma tendono a diventare piuttosto grandi abbastanza velocemente, quindi non viene richiesto di produrre la sequenza completa.
Compito:
Dato un numero di input in qualsiasi formato ragionevole, il tuo compito è produrre la sequenza di Goodstein per questo numero almeno fino a quando non raggiunge 10 ^ 25 o 0
Esempi:
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
Dettagli:
- Il numero di input può essere un array, una stringa, un numero intero, purché sia in base decimale
- L'output segue la stessa regola
- La separazione dei termini nell'output può essere spazi, nuove righe o qualsiasi separazione ragionevole
- Non appena la sequenza diventa maggiore di 10 ^ 25, il programma potrebbe uscire normalmente, generare un errore / eccezione o continuare (nessuna restrizione)
- Questo è code-golf , quindi vince la risposta più breve (in byte)
- Naturalmente, sono vietate le scappatoie standard
- Python esempio non funzionante qui
int(q/base.b), q%base.bdeve essere q//base.b, q%base.b(o semplicemente divmod(q, base.b)) per evitare errori in virgola mobile.