(Das mag ziemlich klassisch sein, aber das ist mein erster Beitrag hier, also bin ich noch nicht bereit für das schicke Zeug)
Die Goodstein-Sequenz ist für eine Eingangsnummer wie folgt definiert:
Wähle eine Startnummer n , lasse b = 2 und wiederhole:
- schreibe n in der Notation der Erbbasis b
- Ersetze alle ( b ) s durch ( b +1) s in n und subtrahiere 1
- Ausgabe der neuen Dezimalauswertung von n
- Inkrement b
Die erbliche Basisnotation ist eine Zerlegung einer Zahl, bei der die Basis die größere Zahl ist, die auftreten soll. Beispiele:
83in HB3:3^(3+1)+2226in HB2:2^(2^(2+1))+2^(2+1)+2
Goodstein-Sequenzen enden immer bei 0 , werden aber in der Regel sehr schnell groß, sodass nicht die vollständige Sequenz ausgegeben werden muss.
Aufgabe:
Wenn Sie eine Eingabenummer in einem angemessenen Format eingeben, müssen Sie die Goodstein-Sequenz für diese Nummer mindestens so lange ausgeben, bis sie 10 ^ 25 oder 0 erreicht
Beispiele:
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
Einzelheiten:
- Die eingegebene Nummer kann ein Array, eine Zeichenfolge oder eine Ganzzahl sein, solange sie in Dezimalzahlen angegeben ist
- Die Ausgabe erfolgt nach der gleichen Regel
- Die Trennung der Ausdrücke in der Ausgabe kann durch Leerzeichen, Zeilenumbrüche oder eine sinnvolle Trennung erfolgen
- Sobald die Sequenz größer als 10 ^ 25 wird, wird Ihr Programm möglicherweise normal beendet, es wird ein Fehler / eine Ausnahme ausgegeben oder es wird fortgesetzt (keine Einschränkung).
- Das ist Code-Golf , also gewinnt die kürzeste Antwort (in Bytes)
- Standardlücken sind natürlich verboten
- Python ungolfed Arbeitsbeispiel hier
int(q/base.b), q%base.bmuss sein q//base.b, q%base.b(oder einfach nur divmod(q, base.b)), um Gleitkommafehler zu vermeiden.