Die RTA-Sequenz (Reverse-Then-Add) ist eine Sequenz, die durch Hinzufügen einer Zahl zu ihrer Rückseite und Wiederholen des Prozesses für das Ergebnis erhalten wird. Zum Beispiel
Somit enthält die RTA-Sequenz von 5 10, 11, 22, 44, 88, 176 usw.
Die RTA-Wurzel einer Zahl ist die kleinste Zahl, die entweder gleich n ist oder in ihrer RTA-Sequenz n hervorruft.
Zum Beispiel wird 44 in der RTA-Sequenz von 5, 10, 11, 13, 22, 31 usw. gefunden. Von diesen ist 5 die kleinste und daher ist RTAroot (44) = 5.
72 ist nicht Teil der RTA-Sequenz einer Zahl und wird daher als eigene RTA-Wurzel betrachtet.
Die Eingabe ist eine positive Ganzzahl in einem Bereich, den Ihre Sprache auf natürliche Weise verarbeiten kann.
Die Ausgabe ist die RTA-Wurzel der angegebenen Zahl, wie oben definiert.
Testfälle
Input
Output
44
5
72
72
132
3
143
49
1111
1
999
999
Verwandte OEIS: A067031 . Die Ausgabe ist eine Zahl aus dieser Sequenz.
Brachylog ,
2422 Bytes{{
und hatte}}
Erläuterung
Entschuldigung für die wackelige Erklärung, das ist das Beste, was ich mir einfallen lassen konnte
Probieren Sie es online!
quelle
{|↰₁}
dort ist einfach aber genial. Gute Arbeit!Haskell ,
59-57Bytes-2 Bytes dank user1472751 (mit einer Sekunde
until
anstelle von Listenverständnis &head
)!Probieren Sie es online!
Erläuterung
Dies wird
True
für jede RTA-Wurzel ausgewertet :Der Begriff
(+)<*>read.reverse.show
ist eine Golfversion vonDas fügt eine Zahl zu sich selbst umgedreht.
Die Funktion wird
until
wiederholt angewendet,(+)<*>read.reverse.show
bis sie unser Ziel überschreitet.Wenn Sie all dies in ein weiteres
until
Paket packen, das mit1
1 beginnt,(+1)
finden Sie die erste RTA-Wurzel.Wenn es keine richtige RTA-Wurzel von gibt
n
, gelangen wir irgendwann dahin,n
wountil
die Funktion seitdem nicht mehr angewendet wirdn<=n
.quelle
until
für die äußere Schleife05AB1E , 7 Bytes
Verwendung der neuen Version von 05AB1E (in Elixir umgeschrieben).
Code
Probieren Sie es online!
Erläuterung
quelle
j
hat eine besondere Bedeutung in einer rekursiven Umgebung? Ich wusste nur über das₁
Durch₆
und dasλ
Selbst in der rekursiven Umgebung Bescheid . Gibt es sonst noch mehrj
? EDIT: Ah, ich sehe auch etwas£
im Quellcode . Wo wird es verwendet?j
Prüft im Wesentlichen, ob der Eingabewert in der Reihenfolge ist.£
Stellt sicher, dass die ersten n Werte der Sequenz (wieλ<...>}¹£
) zurückgegeben werden.Jelly ,
1211 BytesVielen Dank an @JonathanAllan für das Abschlagen von 1 Byte!
Probieren Sie es online!
Wie es funktioniert
quelle
Ruby,
6657 BytesProbieren Sie es online!
Eine rekursive Funktion, die die RTA-Operation wiederholt "rückgängig macht", bis eine Zahl erreicht wird, die nicht von ihr erzeugt werden kann, gibt dann das Minimum zurück.
Anstatt zu verwenden
filter
, was lang ist, übersetze ich stattdessen einfachmap
den Bereich von 1 bis zur Zahl. Wenn für jedes m in diesem Bereich m + rev (m) die Zahl ist, ruft es die Funktion rekursiv auf m auf ; Andernfalls wird n zurückgegeben . Dies beseitigt die Notwendigkeit für afilter
und gibt uns einen Basisfall von f (n) = n kostenlos.Highlights sind das Speichern eines Bytes mit
Integer#digits
:Das letzte wäre ein Byte kürzer, aber leider analysiert Ruby Zahlen, die mit einem
0
Oktal beginnen.quelle
Python 2 , 70 Bytes
Probieren Sie es online!
quelle
Pyth , 12 Bytes
Testen Sie eine Testsuite!
Überraschend schnell und effizient. Alle Testfälle liefen gleichzeitig und dauerten weniger als 2 Sekunden.
Wie es funktioniert
quelle
05AB1E , 13 Bytes
Probieren Sie es online!
Erläuterung
quelle
global_counter
..>.>JavaScript (ES6), 61 Byte
Probieren Sie es online!
Kommentiert
quelle
05AB1E ,
211615 Bytes-1 Byte dank @Emigna .
Probieren Sie es online aus.
Erläuterung:
quelle
Holzkohle , 33 Bytes
Probieren Sie es online!Link ist eine ausführliche Version des Codes. Erläuterung:
Eingangq .
Zuordnen2 q zu h damit die Schleife startet.
Wiederholen Sie dies währendh > q :
Schieben Sie einen Dummy-Null-String aufu Erhöhen Sie damit seine Länge und weisen Sie die resultierende Länge zu h ;
wiederholen währendh < q :
fügen Sie die Rückseite von hinzuh zu h .
Drucken Sie die endgültige Länge vonu Welches ist die gewünschte Wurzel.
quelle
MATL , 17 Bytes
Probieren Sie es online!
Erläuterung
quelle
:!`tG=~yV2&PU*+tG>~*tXzG=A~]f1)
Probieren Sie es online aus!Java 8, 103 Bytes
Probieren Sie es online aus.
Erläuterung:
Das arithmetische Umkehren der Ganzzahl ist 1 Byte länger ( 104 Byte ):
Probieren Sie es online aus.
quelle
C (gcc) ,
12010099 BytesProbieren Sie es online!
i
Überprüft bei gegebener Eingabe jede Ganzzahl voni
bis 0 auf eine Sequenz, die Folgendes enthälti
.i
ist der Eingabewerto
ist der Ausgabewert (die bisher gefundene Mindestwurzel)a
ist die aktuelle Ganzzahl, die geprüft wirdb
ist das aktuelle Element dera
Sequenzc
undd
werden verwendet, umb
zu seiner Rückseite hinzuzufügenquelle
-DL=for
würde Ihnen 2 Bytes sparen.i=o;
wenn-O0
Sie 5 Bytes sparen.Japt ,
161511 BytesVersuch es
quelle
Physica , 57 Bytes
Gutschrift für die Methode geht an Doorknob .
Probieren Sie es online!
quelle
C (gcc) , 89 Bytes
Ich führe jede Sequenz in [1, n ) aus, bis ich eine Übereinstimmung erhalte. Null ist ein Sonderfall, weil sie nicht beendet wird.
Probieren Sie es online!
quelle