Bei einer positiven Ganzzahl N
geben Sie die kleinste positive Ganzzahl so aus, dass diese Zahl ein Palindrom ist (dh ihre eigene Umkehrung ist) und durch teilbar ist N
.
Das Palindrom (dh die Ausgabe) muss keine führende Null haben, um ein Palindrom zu sein, dh es 080
ist keine gültige Antwort für 16
.
Die Eingabe wird aus dem vorherigen Grund niemals ein Vielfaches von 10 sein.
Ihr Programm kann so viel Zeit wie nötig in Anspruch nehmen, auch wenn es in der Praxis viel zu lang wäre, die Antwort auszugeben.
Eingänge und Ausgänge
- Sie können die Eingabe
STDIN
als Funktionsargument oder ähnliches durchgehen . - Sie können die Ausgabe an drucken
STDOUT
, von einer Funktion zurückgeben oder etwas Ähnliches. - Ein- und Ausgänge müssen dezimal sein.
Testfälle
N Output
1 1
2 2
16 272
17 272
42 252
111 111
302 87278
1234 28382
Wertung
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
N
Antworten:
2sable / 05AB1E , 6/7 Bytes
2sable
Erläuterung
Probieren Sie es online aus
05AB1E
Der Unterschied zum 2sable-Code besteht darin, dass die Eingabe in 05AB1E nur einmal implizit erfolgt. Daher müssen wir hier
¹
die erste Eingabe erneut abrufen .Probieren Sie es online aus
1 Byte mit 2sable gespeichert, wie von Adnan vorgeschlagen
quelle
[DÂQ#+
.Haskell,
453734 Bytesquelle
Pyth, 7 Bytes
Probieren Sie es online aus: Demonstration
Erläuterung
quelle
Java,
16415912610894 BytesGolf Version:
Ungolfed-Version:
Dank an Emigna und Kevin Cruijssen, die Verbesserungen beigetragen und die Bytes fast halbiert haben :)
quelle
x % a == 0
redundant, wenn Sie x als initialisieren und nur um a erhöhen? Kann der Vergleich mit der Umkehrung der Zeichenfolge auch unter der Bedingung while durchgeführt werden?import org.apache.commons.lang.StringUtils;
und verwendenorg.apache.commons.lang.StringUtils.reverse
.for(;;)
ist kürzer alswhile(1>0)
. Es ist kein vollständiges Programm erforderlich, dies ist lediglichint c(int a){...}
eine gültige Antwort, da die Frage die folgende Regel enthält: " Sie können die Eingabe als Funktionsargument verwenden. Sie können die Ausgabe einer Funktion zurückgeben. " @Emigna ist in der Tat richtig Der Modulo Check ist nicht notwendig.x += a
) teilbar sind . Ich muss nicht auf Teilbarkeit prüfen :) und danke für die Golftipps!C #,
10380 BytesUngolfed
quelle
x.ToString()
mit "x +" "" werden eine Reihe von Zeichen gespeichert.Python 2, 46 Bytes
Ideone es!
Rekursive Lösung mit
c
als Zähler.Der Fall für
0
ist interessant, weil, obwohlc=0
er die Palindrombedingung erfüllt, er nicht zurückgegeben werden würde, weil erccc and 0 or xxx
immer zurückgibtxxx
.quelle
c*(`c`[::-1]==`c`)or
.PHP, 39 Bytes
;
nach einer Weile nichts zu tunstrrev
Zeichenkette rückwärts zurückgebenGleiche Länge mit for-Schleife
quelle
Brachylog , 8 Bytes
Probieren Sie es online! (ungefähr 5 Sekunden für
1234
)Überprüfen Sie alle Testfälle. (ungefähr 20 Sekunden)
quelle
Javascript (ES6),
5551 Bytes4 Bytes dank Neil.
quelle
+
scheint das erste unnötig.(x,c=x)
Sie das vermeiden&&c
?c^[...c+""].reverse().join``?f(x,x+c):c
ein Byte sparen.c-
würde für etwas höhere Zahlen als arbeitenc^
, wenn nötig.Pyke,
119 BytesProbieren Sie es hier aus!
quelle
C
217189 BytesStandalone-Version:
Aufruf einer Funktionsversion:
Ungolfed:
Aufrufen einer Funktion ohne Golf:
Ich habe die eigenständige Version für Historizität hinzugefügt.
Dies ist mein erster Codegolf, jeder Kommentar ist willkommen!
quelle
main()
unabhängig von Ihren Vorlieben nicht zu zählen . Du würdest nicht Baseball spielen, indem du zuerst zwölf Loops laufen lässt, bevor du mit "Ich bevorzuge es" markierst. Du wirst niemals sicher ankommen. Dies ist ein Wettbewerb, und die Hauptregel lautet, alle erforderlichen und zulässigen Mittel einzusetzen, um die Anzahl der Bytes zu verringern.int f(int a)
->f(a)
2) Wenn Sie einigeint
s deklarieren müssen, können Sie die Funktionsparameter verwenden:int f(int a){int b;
->f(a,b){
3)sprintf
wird niemals 0 zurückgeben, so dass Sie Folgendes verwenden könnenwhile
:while(1){sprintf(c,"%d",b);
->while(sprintf(c,"%d",b)){
4 ) benutze das K & R C, um eine Funktion zu definieren, die du mit meinem zweiten Hinweisint s(char*a){int b=strlen(a);for(int i=0
s(a,b,i)char*a;{b=strlen(a);for(i=0;
R,
117113109101 BytesUngolfed
all(charToRaw(a)==rev(charToRaw(a)))
prüft, ob an jeder Positiona
der Wert vona
und seine Umkehrung gleich sind (dh oba
palindromisch ist).Es könnte möglich sein, einige Bytes durch Herumspielen mit dem Golf zu spielen
types
.quelle
Eigentlich ,
1514 BytesGefragt nach einer Antwort von Leaky Nun. Golfvorschläge sind willkommen. Probieren Sie es online!
Ungolfing
quelle
Haskell,
64 6356 BytesMit
(1!)16
oder einfach anrufen1!16
. Probieren Sie es auf Ideone.quelle
VBSCRIPT, 47 Bytes
ungolfed
quelle
Perl, 25 Bytes
Beinhaltet +2 für
-ap
Führen Sie mit der Eingabe auf STDIN aus:
palidiv.pl
:quelle
SILOS , 109 Bytes
Probieren Sie es online!
quelle
Japt , 14 Bytes
Probieren Sie es online!
Vielen Dank an ETHproductions für die Hilfe! :)
quelle
MATL , 10 Bytes
Probieren Sie es online!
quelle
PowerShell v2 +, 72 Byte
Lange, weil das Umkehren in PowerShell nicht sehr gut funktioniert. ;-)
Nimmt Eingaben auf
$args[0]
, speichert sie in$i
(unsere Schleifenvariable) und$n
(unsere Eingabe). Loops unendlich, Erhöhen$i
von$n
jeder Zeit (auf Garantie Teilbarkeit).Bei jeder Iteration prüfen wir, ob
$i
es sich um ein Palindrom handelt. Hier passiert ein Trick, also lassen Sie mich erklären. Wir nehmen$i
es zuerst und fassen es zusammen"$i"
. Das Array wird dann in umgekehrter Reihenfolge indiziert,["$i".length..0]
bevor es-join
wieder in einen String umgewandelt wird. Das wird in die rechte Seite des-eq
Operators uality eingespeist, der den String implizit in einen zurücksetzt[int]
, da dies der linke Operand ist. Hinweis: Bei diesem Casting werden keine führenden Nullen aus dem Palindrom entfernt, aber da wir garantiert sind, dass die Eingabe nicht durch teilbar10
ist, ist das in Ordnung.Dann ist
if
es ein Palindrom, wir platzieren es einfach$i
auf der Pipeline undexit
. Die Ausgabe erfolgt implizit am Ende der Ausführung.Testfälle
quelle
MATLAB, 76 Bytes
Aufrufformat ist
p(302)
Ergebnis ist eine Zeichenfolge.Hier ist nichts Schlaues. Es führt eine lineare Suche mit den Funktionen
num2str()
und durchfliplr()
.Diese hässliche Anordnung ist ein Hauch kürzer als die Verwendung eines
while(1) ... if ... break end
Musters.Ungolfed
quelle
Mathematica, 49 Bytes
Startet die Suche bei
c = N
und erhöht,c
falls kein Palindrom und nicht teilbar durchN
. Wenn die Bedingungen erfüllt sind, wird ausgegebenc
.quelle
Gelee, 12 Bytes
Probieren Sie es online!
Erläuterung:
Dieser Link benötigt 1 Argument. Die
µ
s teilen es in 4 Teile. Ausgehend von der letzten und nach links bewegen:quelle
Elixier , 75 Bytes
quelle
Python 2,
6665 Bytesi
wird eingegeben undx
wird (irgendwann) ausgegebenNachdem ich andere Antworten durchgeblättert hatte, fand ich eine kürzere Python 2-Antwort, aber ich habe die Mühe in meine Lösung gesteckt, also kann ich sie auch hierher werfen. ¯ \ _ (ツ) _ / ¯
quelle
[::-1] else
.return x if x%i==0&&
x==
x[::-1]else f(i,x+1)
, was bedeutet dann, dass Sie es zu einem Lambda machen und mehr Bytes Golf spielen können?REXX, 46 Bytes
quelle
Python 2 , 44 Bytes
Probieren Sie es online!
Ich weiß, dass die Frage vor mehr als sechs Monaten gestellt wurde, aber dies war kürzer als jede andere Python-Einreichung.
quelle
QBIC , 29 Bytes
Erläuterung:
quelle
Perl 6 , 35 Bytes
Erläuterung:
quelle
Perl 6, 39 Bytes
(33 ohne die
my &f=
)quelle