Der verrückte Mathematiker besitzt eine breite Sammlung von Zahlen, und deshalb ist der Platz, den er übrig hat, ziemlich begrenzt. Um einiges zu retten, muss er seine ganzen Zahlen falten, aber leider ist er wirklich faul. Wenn Sie ihm helfen möchten, müssen Sie eine Funktion / ein Programm erstellen, die / das eine bestimmte positive ganze Zahl für unseren Zahlenwahnsinnigen faltet.
Wie falte ich eine ganze Zahl?
Wenn es gleichmäßig durch die Summe seiner Ziffern teilbar ist, dividieren Sie es durch die Summe seiner Ziffern. Wenn dies nicht der Fall ist, teilen Sie den Rest durch die Summe der Ziffern. Wiederholen Sie den Vorgang, bis das Ergebnis erreicht ist 1
. Die gefaltete Ganzzahl ist die Anzahl der Operationen, die Sie ausführen mussten. Nehmen wir ein Beispiel (sagen wir 1782
):
Holen Sie die Summe ihrer Ziffern:
1 + 7 + 8 + 2 = 18
.1782
ist gleichmäßig teilbar durch18
, die nächste Zahl ist also1782 / 18 = 99
.99
nicht teilbar ist durch9 + 9 = 18
, daher nehmen wir den Rest:99 % 18 = 9
.9
ist offensichtlich teilbar durch9
, also teilen wir es und erhalten1
.
Das Ergebnis ist 3
, weil 3 Operationen erforderlich waren, um zu erreichen 1
.
Regeln und Spezifikationen
Bei einigen Ganzzahlen ist die Summe der Ziffern möglicherweise gleich
1
, z. B.10
oder100
. Ihr Programm muss solche Fälle nicht behandeln. Das heißt, Sie werden garantiert, dass die als Eingabe angegebene Ganzzahl nicht die gleiche Ziffernsumme1
hat und keine Operation mit der angegebenen Ganzzahl zu einer Zahl führt, deren Ziffernsumme1
(mit Ausnahme von sich1
selbst, der " Ziel"). Zum Beispiel erhalten Sie nie10
oder20
als Eingabe.Die Eingabe ist eine positive Ganzzahl höher als
1
.Es gelten Standardlücken .
Sie können die Eingabe und Ausgabe mit jedem Standardmittelwert vornehmen .
Testfälle
Eingabe -> Ausgabe 2 -> 1 5 -> 1 9 -> 1 18 -> 2 72 -> 2 152790 -> 2 152 -> 3 666 -> 3 777 -> 3 2010 -> 3 898786854 -> 4
Hier ist ein Programm , mit dem Sie den Prozess visualisieren und weitere Testfälle ausprobieren können.
Das ist Code-Golf , also gewinnt der kürzeste Code in jeder Sprache (in Bytes)!
8987868546
eine gültige Eingabe ist, wird es Ihr Test-Tool und auch viele (wenn nicht alle) der Antworten brechen ...898786854
, nicht8987868546
(Sie haben6
am Ende eine hinzugefügt )8987868546
ist nicht 1 ( Regel 1 erfüllt ) und8987868546
ist eine positive ganze Zahl höher als 1 ( Regel 2 erfüllt ).Antworten:
05AB1E ,
1312 BytesProbieren Sie es online!
Erläuterung
quelle
Python 2 ,
6357 Bytes-1 dank totalhuman
-1 dank Mr. Xcoder
-4 dank reffu
Probieren Sie es online!
quelle
Haskell,
8578 Bytes7 Bytes gespart dank Bruce Forte.
Probieren Sie es online aus.
quelle
divMod
und löschenwhere
: Probieren Sie es online aus!where
. Ich werde das in Zukunft nutzen. :)sum[read[d]|d<-show n]
speichert ein ByteJavaScript (ES6),
66585149 BytesÜbernimmt die Eingabe als Ganzzahl. Gibt
false
für0
oder zurück1
und löst einen Überlauffehler aus, wenn eine Zahl gefunden wird, deren Ziffern sich addieren1
.Probier es aus
quelle
eval(array.join`+`)
?Schale , 12 Bytes
Probieren Sie es online!
Erläuterung
quelle
C # (.NET Core) , 87 Byte
Probieren Sie es online!
Lambda-Funktion, die eine Ganzzahl annimmt und zurückgibt.
quelle
Japt ,
221917 Bytes-3 Bytes dank @Shaggy.
-2 Bytes dank @ETHproductions
Probieren Sie es online!
quelle
s_¬
,ì
um weitere zwei Bytes zu speichern :-)Retina , 100 Bytes
Probieren Sie es online! Link enthält nur kleinere Testfälle, da die größeren zu lange dauern.
quelle
Mathematica, 73 Bytes
quelle
==0
durch ersetzt werden<1
?PHP, 68 + 1 Bytes
unäre Ausgabe:
Dezimalausgabe, 73 + 1 Byte:
Laufen Sie als Pipe mit
-nR
oder versuchen Sie es online .Der Elvis-Operator benötigt PHP 5.3 oder höher. Ersetzen Sie
?:
bei älteren PHP-Versionen durch?$n%$s:
(+5 Byte).quelle
Ruby, 46 Bytes
quelle
Haskell ,
94938988 BytesDas fühlt sich wirklich lang an ..
Probieren Sie es online!
Vielen Dank an @Laikoni & @nimi für das Abschlagen von jeweils 1 Byte!
quelle
C (gcc) ,
83817673 BytesProbieren Sie es online!
quelle
Gelee , 12 Bytes
Probieren Sie es online!
quelle
Pyth,
20 bis14 BytesProbieren Sie es hier aus.
quelle
Perl,
71Bytes,64Bytes, 63 BytesProbieren Sie es online aus
BEARBEITEN: 7 Bytes gespart, dank Xcalis Kommentar
EDIT: seit 5.14 zerstörungsfreie Ersetzung s /// r
quelle
-pl
obere Feld stattdessen ein Befehlszeilenflag sein?-pl
Flagge gemäß diesem Beitrag zählen .$c
muss nicht initialisiert werden Es beginnt beiundef
0. Das Semikolon nach dem while-Abschluss kann gehen. Auch brauchst du nicht-l
. Es ist nicht erforderlich, mehrere Eingaben in einem Durchgang vorzunehmen.Dyalog APL, 36 Bytes
Probieren Sie es online!
Wie?
quelle
Gaia , 13 Bytes
Probieren Sie es online!
Erläuterung
quelle
Matlab, 150 Bytes
Eingaben für die Funktion sollten als Zeichenfolge erfolgen, z. B. X ('152').
Die Funktion arbeitet während des Schleifens und Inkrementierens von d. Die
x=y;
Zeile war notwendig, um zu vermeiden, dass Matlab versuchte, einen Variablenwert gleichzeitig zu lesen und zu überschreiben, anscheinend ein neuer Wert für mich.Ungolfed:
quelle
Haskell , 68 Bytes
Probieren Sie es online! Basierend auf der Antwort von w0lf .
quelle
R , 85 Bytes
Anonyme Funktion, die die erforderliche Ausgabe zurückgibt.
Überprüfen Sie alle Testfälle!
quelle