Eine Zahl ist in base-b vereinfachter Goodstein-Form, wenn sie geschrieben ist als
b + b + ... + b + c, 0 < c ≤ b
Die vereinfachte Goodstein-Folge einer Zahl beginnt mit dem Schreiben der Zahl in der vereinfachten Goodstein-Form zur Basis 1, dem Ersetzen aller Einsen durch Zweien und dem Subtrahieren von 1. Das Ergebnis in der vereinfachten Goodstein-Form zur Basis 2 umschreiben, dann alle Zweien durch Dreien ersetzen und 1 subtrahieren usw., bis Sie 0 erreichen.
Ihr Programm soll eine positive Ganzzahl eingeben und die Goodstein-Sequenz ausgeben / drucken und beenden. Ihr Programm sollte mit Zahlen unter 100 umgehen können, obwohl es möglicherweise nicht in angemessener Zeit beendet wird.
Wenn Sie beispielsweise 3 als Eingabe angeben, sollte Ihr Programm eine Ausgabe durchführen (die rechte Seite ist nur eine Erklärung).
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
Abstand spielt keine Rolle.
Gewinnkriterium:
Das ist Code-Golf . Kürzester Code gewinnt.
Antworten:
05AB1E , 19 Bytes
Könnte auch als neu angeordnet werden
>Å1[ND>:`Ž<)0KD'+ý,
Probieren Sie es online!
Erläuterung
quelle
Python 2,
7774 Bytes-3 Bytes dank Lynn
Probieren Sie es online!
Läuft problemlos bis zu n = 100 (obwohl die Ausgabe zu lang ist, um sie vollständig anzuzeigen).
quelle
n=input()
b=1
while n:…
n+=n/b-1;b+=1
. 74 Byteswhile
folgenden a setzen;
. Ich würde vermuten, dass dies daran liegt, dass, wenn die Zeile mit einerwhile
folgenden Anweisung (durch Semikolons getrennt) begonnen wird, dies innerhalb ihres Gültigkeitsbereichs betrachtet wird und das Verhalten mehrdeutig oder zumindest etwas undurchsichtig istPyth , 29 Bytes
Probieren Sie es hier aus!
quelle
Mathematica, 123 Bytes
Probieren Sie es online!
quelle
Python 3, 155 Bytes
Dies kann neu formatiert werden
quelle
1+1+...
und beachten, dass Ihr Programm jede positive Ganzzahleingabe verarbeiten soll.+
.-~x
hat den gleichen Wert wiex+1
, Sie müssen ihn jedoch nicht in Klammern setzen, da unär-
(Negation) und unär~
(bitweise Negation) eine höhere Priorität haben als*
. In deinem Fall[1]*-~n
ist das gleich[1]*(n+1)
.Javascript ES6, 121 Zeichen
quelle
Perl 5 , 71 Bytes
Probieren Sie es online!
quelle