Auch als [analoge Wurzel] bekannt
( Gegenüber der digitalen Wurzel! );)
Die digitale Wurzel einer Zahl ist die fortlaufende Summe ihrer Ziffern, bis sie eine einzelne Ziffer ist. Die digitale Wurzel von 89456 wird beispielsweise folgendermaßen berechnet:
8 + 9 + 4 + 5 + 6 = 32
3 + 2 = 5
Die digitale Wurzel von 89456 ist 5.
Bei einer über STDIN eingegebenen Ziffer werden alle möglichen zweistelligen Zahlen mit dieser digitalen Wurzel gedruckt / zurückgegeben. Wenn Sie es brauchen, kann es sich selbst einschließen, zB 05
Dies sind alle möglichen Ein- und Ausgänge:
(Sie können wählen, ob die führende Null für die Ziffer selbst eingefügt werden soll oder nicht)
I / O
0 => 0 oder 00 oder nichts
1 => 01 und / oder 1, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91 - Stellen Sie sicher, dass 1 nicht 100 zurückgibt
2 => 02 und / oder 2, 11, 20, 29, 38, 47, 56, 65, 74, 83, 92
3 => 03 und / oder 3, 12, 21, 30, 39, 48, 57, 66, 75, 84, 93
4 => 04 und / oder 4, 13, 22, 31, 40, 49, 58, 67, 76, 85, 94
5 => 05 und / oder 5, 14, 23, 32, 41, 50, 59, 68, 77, 86, 95
6 => 06 und / oder 6, 15, 24, 33, 42, 51, 60, 69, 78, 87, 96
7 => 07 und / oder 7, 16, 25, 34, 43, 52, 61, 70, 79, 88, 97
8 => 08 und / oder 8, 17, 26, 35, 44, 53, 62, 71, 80, 89, 98
9 => 09 und / oder 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99
Keine Standardlücken , und es ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Herzlichen Glückwunsch an Heeby Jeeby Man zu seiner unglaublichen 46-Byte-Antwort!
Antworten:
Pyke, 6 Bytes
Probieren Sie es hier aus!
quelle
JavaScript (ES6),
273130 BytesGibt andernfalls
0
für0
oder ein Array von Lösungen zurück.Demo
Code-Snippet anzeigen
quelle
+
, um ein weiteres Byte zu speichern? Obwohl es mit Standard-Saiten nicht so funktionieren würde, nehme ich an.+
... Aktualisiert. Vielen Dank!05AB1E ,
13129 Bytes-3 Bytes dank Adnan
Probieren Sie es online!
Erläuterung
quelle
SOSO
, da die Zahl nie größer als 99 sein wird.тL<
ist nicht wirklich kürzer als normal99Ý
. ;)Haskell , 21 Bytes
f
Nimmt eine ganze Zahl und gibt eine Liste von ganzen Zahlen zurück.Probieren Sie es online!
d
und generiert den Bereich mit jeder 9. Ziffer bis zu einer Grenze von 99, mit Ausnahme des schwierigen Falls von0
.0
nutzt das die Leistung0^d==1
für0
und==0
für alle anderen Ziffern. So99^0^0^d
gibt es1
für0
aber99
für alles andere.quelle
Gelee , 8 Bytes
Probieren Sie es online!
Anderer Algorithmus als meine andere Antwort.
quelle
Brain-Flak , 46 Bytes
Probieren Sie es online!
Erläuterung
Diese Antwort basiert auf einer Idee aus Megatoms Antwort, nämlich der Verwendung der Stapelhöhe als Differenz zwischen dem Schleifenzähler und dem Inkrement. Wie die vorherigen Antworten hat diese Antwort eine große äußere Schleife, um alle Nullen abzufangen. Innerhalb der Schleife drücken wir 10, um als Zähler zu fungieren, und starten dann eine weitere verschachtelte Schleife. In dieser Schleife dekrementieren wir den Zähler um 1
Dann platzieren wir die beiden obersten Elemente, die der Zähler und das letzte Element sind, das wir berechnet haben. Diese addieren wir zur Stapelhöhe, um die Dekrementierung auszugleichen, und drücken diese zweimal, einmal für die Ausgabe und einmal, damit sie zur Berechnung des nächsten Ergebnisses verwendet werden kann. Zweimaliges Pushen bedeutet, dass wir versehentlich einen zusätzlichen Wert pushen, der am Ende der Ausführung entfernt werden muss.
Der Grund, warum dies Megatom kaum schlägt, ist, dass Megatoms Antwort gezwungen ist, seine Stapelhöhen zu erreichen, während das letzte Ergebnis noch auf dem Stapel liegt. Dies bedeutet, dass sie gezwungen sind, eine ziemlich teure
[()]
zu verwenden, um die Summe um eins zu verringern. Indem ich das Duplikat an das Ende der Schleife verschiebe, kann ich vermeiden, dass es[()]
am{}
Ende des Programms auf Kosten eines zusätzlichen verwendet werden muss. Wenn Megatom diese Strategie anwenden würde, würde seine Antwort so aussehen:auch 46 Bytes.
Brain-Flak , 52 Bytes
Probieren Sie es online!
Erläuterung
Der Haupt-Outerloop macht einen Sonderfall für die Eingabe von Null. Wenn Null eingegeben wird, springen wir über die gesamte Schleife, platzieren Null und geben dann nichts aus. Ansonsten betreten wir die Schleife. Hier drücken wir die Schleife jedes Mal 10-mal und addieren 9 zum oberen Rand des Stapels, wobei die alten Werte beibehalten werden. Da 9 digitale Summen bewahrt, erhalten wir den nächsten Wert. Sobald die Schleife abgelaufen ist, verlassen wir die erzeugte Null, um die Schleife zu verlassen, die dann
{}
am Ende durch das geknallt wird .Brain-Flak , 56 Bytes
Probieren Sie es online!
Erläuterung
Diese Version funktioniert sehr ähnlich wie die letzte, außer dass wir 9-mal eine Schleife machen anstatt 10, wobei der ursprüngliche Wert weggelassen wird. Dazu müssen wir den Umgang mit dem Speicher etwas umstellen. Alle Bytes, die wir möglicherweise mit dieser Methode gespeichert haben, werden bereinigt.
quelle
Python 2 , 29 Bytes
Probieren Sie es online!
quelle
Brachylog , 12 Bytes
Probieren Sie es online!
Erläuterung
quelle
Bash ,
3127 BytesProbieren Sie es online!
Bisherige
quelle
brace expansion: (...) A sequence expression takes the form {x..y[..incr]}, where x and y are either integers or single characters, and incr, an optional increment, is an integer. (...) When the increment is supplied, it is used as the difference between each term. The default increment is 1 or -1 as appropriate.
Dyalog APL, 15 Bytes
Wie?
⍵,10⍴9
- Eingabe mit 109
s verketten (⍵ 9 9 9 9 9 9 9 9 9 9
).+\
- kumulative Summe.(×⍵)/
- Erweitern Sie die Signum-Zeiten, wobei signum 1 für 1-9 und 0 für 0 ergibt.Probieren Sie es online!
Dyalog APL, 24 Bytes
Benötigt
⎕IO←0
.Wie?
quelle
Brain-Flak , 48 Bytes
Probieren Sie es online!
Ich kann später eine Erklärung hinzufügen.
quelle
Mathematica, 25 Bytes
arbeitet für 0
quelle
0
. Dies würde auch keine Zahlen einschließen, deren Ziffern sich zu einer Zahl von mehr als 9 summieren (z. B.9
nicht99
in der Ausgabe enthalten).Gelee , 12 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
0
Eigentlich 18 Bytes
Probieren Sie es online!
Erläuterung:
quelle
PHP, 41 Bytes
druckt durch Unterstriche getrennte Werte
ERA
ist die kürzeste Konstante in PHP mit dem Wert131116
. Sie können es durch die langweilige Alternative ersetzen100
oder das Programm mit beendendie
Online Version
quelle
Brain-Flak ,
5452 BytesProbieren Sie es online!
Mein erster Ausflug mit Brain-Flak, und ich denke, ich habe es ziemlich gut gemacht. Wer mit mehr Erfahrung hat Ratschläge?
Wie es funktioniert:
quelle
Gelee , 12 Bytes
Probieren Sie es online!
quelle
PHP, 35
Erstellt den Bereich
[$argn, 100)
mit dem Schritt9
as array und druckt ihn aus. Wenn die Eingabe lautet0
, wird der Bereich erstellt[0,0]
=>array(0)
.quelle
Python,
4851 Bytes3 Bytes gespart dank @WheatWizard
quelle
~-x
statt(x-1)
if ~-x%9
~-n==~-x%9or x==n
ein Byte speichernR , 23 Bytes
Probieren Sie es online!
Der TIO-Link wird
function(x)
anstelle von verwendetpryr::f
, da TIO daspryr
Paket nicht installiert hat.quelle
Pyke, 6 Bytes (alte Version)
Working Commit
Erläuterung:
quelle
Ruby , 25 Bytes
Probieren Sie es online!
quelle
C (gcc) , 55 Bytes
f()
muss eigentlich nicht mit einem Argument aufgerufen werden; Dasn
ist einfach da anstatt außerhalb der Funktion ein Byte zu speichern.Probieren Sie es online!
quelle
printf
den Loop-Header einfügen: Probieren Sie es online aus!Holzkohle ,
1411 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Bearbeiten:
2 Bytesgespart,indem nichts für die Null-Eingabe gedruckt wird, und 1 Byte, indem Vektorisierungsoperationen verwendet werden.3 Bytes nur dank @ ASCII. Erläuterung:quelle
Julia 0,6 , 18 Bytes
Ich benutze ein Ternär, um den
0
Fall zu erfassen , und einen Bereichn:9:99
, um die Zahlen zu erstellen. In Julia ist ein Bereich einAbstractVector
und kann anstelle eines tatsächlichen verwendet werdenVector
, in den meisten Fällen von Zahlen, aber es wird gedruckt wie1:9:91
denen sich der Herausforderung nicht gerecht, so dass ich es wickeln in[_;]
den Inhalt in eine zu sammelnVector
.Probieren Sie es online!
quelle
Perl 5 , 25 + 1 (
-n
) = 26 BytesProbieren Sie es online!
quelle
Clojure, 33 Bytes
quelle
Clojure , 38 Bytes
oder als anonyme Funktion, die 29 Bytes ist
Probieren Sie es online!
danke @steadybox
quelle
n=9
sie die letzte Nummer fehlt,99
. Probieren Sie es online! Sie können auch ein Byte speichern, indem Sie das Leerzeichen zwischenf[n]
und entfernen(if(...
.Perl 5, 62 Bytes
Es wird bestimmt einen kürzeren Weg geben
quelle
Gol> <> , 12 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle