Schreiben Sie ein kurzes Programm für den 196-Algorithmus . Der Algorithmus beginnt mit einer Ganzzahl und fügt ihr das Gegenteil hinzu, bis ein Palindrom erreicht ist.
z.B
input = 5280
5280 + 0825 = 6105
6105 + 5016 = 11121
11121 + 12111 = 23232
output = 23232
Eingang
eine Ganzzahl, die keine Lyrchrel-Zahl ist (das heißt, sie ergibt unter diesem Algorithmus letztendlich ein Palindrom, anstatt unendlich fortzufahren )
Ausgabe
das Palindrom erreichte.
code-golf
palindrome
Eelvex
quelle
quelle
Antworten:
APL (22 Zeichen)
Dies funktioniert in Dyalog APL. Hier ist eine Erklärung von rechts nach links:
{ ... }⍞
: Holen Sie sich Eingaben vom Benutzer als Zeichen (⍞
) und geben Sie diese an unsere Funktion ({ ... }
) weiter.⋄
trennt Anweisungen, so dass wir sie von links nach rechts betrachten):a≡⌽a←⍕(⍎⍵)+⍎⌽⍵ : a
: Evaluiere (⍎
) das⍵
reverse ( ) des richtigen Arguments⌽
und füge das zur evaluierten Version des richtigen Arguments hinzu. Formatieren Sie dann das Ergebnis (⍕
dh geben Sie seine Zeichendarstellung an), weisen Sie←
es der Variablen zu ( )a
, und testen Sie schließlich, oba
die Umkehrung äquivalent ista
(dh ist esa
ein Palindrom?). Wenn wahr, kehre zurücka
; Andernfalls...∇a
: Rückmeldunga
in unsere Funktion (∇
implizite Selbstreferenz).Beispiel:
quelle
{⍵=A←⍎⌽⍕⍵:⍵⋄∇A+⍵}⎕
. Sie sparen die Klammern, eine Umkehrung und eine Auswertung.GolfScript, 29 Zeichen
Ausgewählter Kommentar
Das Fleisch des Programms ist
do
natürlich die Schleife. Also werde ich mich nur darum kümmern..`
kopiert die Nummer und fasst sie zusammen..-1%
kopiert diese String-Version und kehrt sie um..@
kopiert die umgekehrte Version und bringt die ursprüngliche nicht umgekehrte Version nach vorne.Also, sagen wir, ist die Zahl 5280. In diesem Stadium ist der Stapel:
5280 "0825" "0825" "5280"
. Die Bühne für den Vergleich ist bereit. (Nach dem Vergleich bleibt der Stapel,5280 "0825"
egal was passiert - die zu vergleichenden Objekte wurden entfernt.);
) und geben Sie 0 zurück (um diedo
Schleife zu beenden ).~
) den umgekehrten String aus (um ihn zu einer Zahl zu machen), addiere (+
) diesen zur ursprünglichen Zahl und gib 1 zurück (um diedo
Schleife fortzusetzen ).quelle
Python 2, 55 Bytes
Folgender JPvdMerwe-Vorschlag:
Python 2, 62:
quelle
n
Sie sich ein Int ansehen,Ruby - 56 Zeichen
quelle
Ich trainiere nur meine Pyth-Fähigkeiten, kein ernsthafter Anwärter.
Pyth, 16 Bytes
Entspricht Python 3:
quelle
J 25
2731quelle
CJam,
2221 BytesCJam wurde erstellt, nachdem diese Frage gestellt wurde. Aus technischen Gründen handelt es sich also um eine ungültige Übermittlung. Aber ich fand die Frage interessant, also hier geht:
Erläuterung:
Die Kernlogik ist, dass Sie bei jeder Wiederholung zuerst prüfen, ob Palindrom erreicht ist oder nicht. Wenn nicht, addieren Sie die Umkehrung zur Zahl. Ziemlich genau, was der Algorithmus ist!
Probieren Sie es hier online aus
quelle
Dies ist ein echter Konkurrent, da es J schon seit Jahrzehnten gibt.
J (16 Bytes)
Dies ist ein Verb, daher kann es in einer J-Sitzung einer Variablen zugewiesen und folgendermaßen verwendet werden:
Wie es funktioniert:
quelle
Python: 66
quelle
Perl, 40 Zeichen
quelle
Scala 82
quelle
JAGL Alpha 1.2 - 19, 21 mit Standard
Nicht streiten , nur
ein bisschenErfahrung mit meiner Sprache.Erwartet eine Nummer von stdin
Erläuterung
quelle
05AB1E , 7 Bytes (nicht konkurrierend)
Nicht konkurrierend , da die Sprache die Herausforderung datiert.
Code:
Erläuterung:
Verwendet die CP-1252- Codierung. Probieren Sie es online! .
quelle
hello
. Die Gabelung behält die ursprüngliche Saite bei und kehrt die Saite um. Es ist eine Abkürzung für duplizieren und umkehren .Brachylog , 8 Bytes
Probieren Sie es online!
Etwas ähnlich wie eines der ersten Brachylog-Programme, das mir auf dem Brachylog-Einführungsvideo aufgefallen ist und von dem ich fasziniert war .
quelle
PHP -
5448 ZeichenPrüfung:
quelle
$str =
Katze erinnern müssen, um in Zukunft Golf spielen zu können. Verdammt viel besser als mitSTDIN
und immer noch besser als$argv[0]
.Bash (64)
Rufen Sie mit: bash <Dateiname> <Nummer> auf
quelle
C # -
10399 ZeichenC # macht sich im Golf nie besonders gut. Elegant, aber wortreich.
quelle
In Q (39 Zeichen)
Beispielnutzung:
Bearbeiten:
Bis jetzt 34, gleiche Verwendung:
quelle
quelle
Jelly , 9 Bytes (nicht konkurrierend)
Eine sehr einfache Antwort, nur für die Herausforderung der Codierung in und esoterischer Sprache.
ṚḌ+µŒḂ¬$¿
Probieren Sie es online!
Sollte diese Antwort auf irgendeiner Ebene unklar oder falsch sein, können Sie sie gerne darauf hinweisen.
Vielen Dank an Dennis, der mir bei diesem ersten kleinen Stück Code geholfen hat.
quelle
Python. 85 Zeichen:
Wenn Sie nicht bei jeder Iteration eine Ausgabe wünschen:
(ein Zeichen weniger)
quelle
Windows PowerShell (63)
Ich hasse es immer noch, dass es keine einfache Möglichkeit gibt, eine Saite umzukehren.
quelle
long
den größten integrierten PowerShell-Typ sicher, aber trotzdem verschwende ich zwei Zeichen.Haskell
8987 ZeichenEtwas lesbare Version:
Die Golf-Version wurde durch manuelles Inlinen und Umbenennen der restlichen Funktionen in Einzelzeichennamen erstellt.
quelle
until
aus dem Prelude nutzen und das Muster für die Anwendung eines Binäroperators aufx
und extrahierenr x
. Verwenden Sie auchreadLn
anstelle vongetLine
undread
. Das Ergebnis spart 20 Zeichen:f%x=f x$read.reverse.show$x;main=readLn>>=print.until((==)%)((+)%)
r=(=<<read.reverse.show)
und nur verwendenr(==)`until`r(+)
. Abgesehen von dieser Speicherung muss es sich nicht um ein vollständiges Programm handeln, eine gültige Einreichung kann lediglich die zuvor unbenannte Funktion sein. Das bringt Sie auf 41 Bytes zurück: Probieren Sie es online aus!befunge, 57 bytes
Obwohl sich der Code in einem 4x19-Raster befindet, könnte man ihn 76 nennen.
quelle
C ++ TMP (256 Zeichen)
Diese Version könnte etwas gekürzt werden, aber eine 256-stellige Antwort ist schwer zu übersehen. Hier ist eine nicht golfene Version:
quelle
Pyke, 13 Bytes (nicht konkurrierend)
Probieren Sie es hier aus!
quelle
Add ++ , 57 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Powershell,
6362 Bytes-1 Byte dank @AdmBorkBork
Testskript:
quelle
;
zwischenparam($m)
und nichtfor
.GNU DC, 46 Bytes
Benötigt GNU dc, min Version 1.4 (für
R
Befehl).Input und Output sind wie gewohnt top of stack. Es ist erstaunlich viel Code erforderlich, um die Ziffern in dc umzukehren (es sei denn, mir fehlt etwas, was bei weitem nicht unmöglich ist). Es hat den numerischen Bereich, um sich bei Eingaben wie diesen gut zu verhalten (die beispielsweise 32-Bit-Arithmetik ohne Vorzeichen überlaufen):
Erläuterung
quelle
R
Befehl verwendet wird. Gute Lösung!R
das neu ist. Ich freue mich auf Ihre Methode!R ,
193109105 Bytes-84 Bytes dank Giuseppe! -4 byes danke an JayCe!
Probieren Sie es online!
quelle
strsplit(x,"")
ist kürzer alsstrsplit(x,NULL)
undel(L)
ist kürzer alsL[[1]]
.as.double
ist kürzer alsas.numeric
undstrtoi
ist kürzer als beide;t
Verwenden Sie es einfach direkt in Ihrerif
Anweisung, anstatt es festzulegen. Dies ist auch eine rekursive Funktion, wenn ich mich nicht irref=
.utf8ToInt
die Konvertierung in Ziffern undintToUtf8
die Rückkonvertierung in Erwägung ziehen . Das spart viel Byte!while
Schleife-
anstelle von verwendenU
. Ich auch ersetztrev
mit ,!
aber es speichert nicht jedes Byte ...