Erstellen Sie ein Programm, das die Eingabezeichenfolge beginnend mit der Eingabezeichenfolge in ein Palindrom konvertiert. Das Programm selbst muss ein Palindrom sein.
Zum Beispiel Eingabe:, neverod
Drucken neveroddoreven
. Sie sollten auch Mehrwort- und Mehrzeileneingaben verarbeiten.
neverod
->neverodadoreven
(mit dema
dazwischen)Antworten:
Dyalog APL,
64Probieren Sie es hier aus.
Andere Lösungen:
Erläuterung
Sie sind nur:
Monadisch
,
und⊢
macht nichts mit Streichern. Dyadisch,
ist Verkettung. Dyadic⊢
gibt seinen rechten Operanden zurück. Und⌽
ist offensichtlich Umkehrung.quelle
Piet 19x2 = 38
Akzeptiert Eingaben, bis sie auf 0x00 treffen. Beendet nicht, aber die Ausgabe ist korrekt.
quelle
APL, 9
Erläuterung:
quelle
CJam, 13 Bytes
Probieren Sie es hier online aus
oder..
GolfScript, 9 Bytes
Probieren Sie es hier aus
quelle
#
Kommentar würde dort genauso gut funktionieren.}
bekanntermaßen ein super Kommentar seit Ewigkeiten :)C ++, 162 Bytes
C 117 Bytes
quelle
Haskell, 102 + 22 = 124 Bytes
Dies muss mit dem
Control.Applicative
Modul im Bereich ausgeführt werden, der über die ghci init-Datei eingestellt werden kann.ghci
::m Control.Applicative
(-> +22 Bytes).Kein Kommentar-Trick, nur 7 Funktionen, von denen 4 niemals aufgerufen werden.
Wenn Funktionen (anstelle von Programmen) erlaubt sind:
Haskell, 55 + 22 = 77 Bytes
Verwendung
f "qwer"
->"qwerrewq"
Bearbeiten: die vorherige Version war einfach falsch.
quelle
Pyth, 11 Bytes
In Pyth wird nichts gedruckt, was mit einem Leerzeichen vorausgeht. Also fügen wir einfach das Negativ der Zeichenkette zu sich selbst hinzu, setzen ein Leerzeichen, beginnen eine Zeichenkette und spiegeln die linke Seite des Zitats. "
Probieren Sie es hier online aus
quelle
Rubin, 44
Nimmt eine mehrzeilige Zeichenfolge als Eingabe von stdin und gibt eine Ruby-Darstellung dieser Zeichenfolge aus, die umgekehrt verkettet ist. Könnte ein Trim_Character durch Ersetzen
||
mit#
dem toten Code in der zweiten Zeile auszukommen.quelle
s=gets p
! =p steg=s
Jolf, 9 Bytes
Neuere Sprache, nicht konkurrierend
Versuch es hier
Erklärung: Ich habe gerade erst mit Jolf angefangen und glaube nicht, dass ich das richtig erkläre.
quelle
η
in der Lösung verwendet haben, sehr gut gemacht. Sie können zwei Bytes speichern , indem sie die mu eliminiert, wie:a+i_i+a
. (Jolf hat auch implizite Eingaben, um den Rest der Argumente auszufüllen, aber dies ist kein Problem, da immer nur eine Eingabe auf einmal erfolgt.) Ich würde Ihre ursprüngliche Lösung trotzdem in der Antwort behalten.PowerShell, 67
Probieren Sie es online aus
Wie von @mazzy vorgeschlagen, kann der Code bei Verwendung eines statischen Bereichs um 12 Byte verkürzt werden. Dies begrenzt jedoch die Eingabelänge auf 9 KByte. Theoretisch wären 9 MByte möglich, dies würde den Code jedoch erheblich verlangsamen.
quelle
param($s)$s+-join$s[$s.Length..0]#]0..htgneL.s$[s$nioj-+s$)s$(marap
$args|%{$_+-join$_[9Kb..0]}#}]0..bK9[_$nioj-+_${%|sgra$
(55 Byte)Fuzzy Octo Guacamole, 17 Bytes
FOG ist neuer als diese Herausforderung, daher ist dies nicht konkurrierend.
Alternative Lösung in 19 Bytes:
Beide nehmen Eingaben entgegen, duplizieren und kehren sie um und verbinden den Stapel.
Erläuterung:
quelle
tinyBF , 40
Mein erster Gedanke war Brainfuck, aber es ist unmöglich, die Zahnspangen zusammenzubringen ... Zum Glück hat tinyBF eine einfachere Flusskontrolle.
Keine Kommentare, es wird eine nullterminierte Zeichenfolge als Eingabe verwendet und das Ergebnis in einer nullterminierten Zeichenfolge zurückgegeben. Sie können es hier testen. Seien Sie jedoch gewarnt, dass es nicht anhält (obwohl Firefox zumindest dazu auffordert, das nicht reagierende Skript anzuhalten).
Kommentiert:
Beachten Sie, dass bei der Codierung in 2-Bit-Anweisungen die Größe auf 10 Byte reduziert wird (dies wäre kein Palindrom).
quelle
Python 3, 59 Bytes
Ich habe mein Bestes versucht, um eine Lösung zu finden, die nur eine Zeile verwendet, aber ich hatte kein Glück.
Python 3, 79 Bytes
Mein ursprünglicher Versuch, bei dem jede Zeile ein Palindrom ist. Ich denke nicht, dass es für diese Herausforderung notwendig ist, aber ich habe es für alle Fälle aufgenommen.
quelle
lambda
so lang):print((lambda a:a+a[::-1])(input()))#)))(tupni()]1-::[a+a:a adbmal((tnirp
Vitsy, 9 Bytes
Probieren Sie es online!
quelle
Befunge , 37 Bytes
Probieren Sie es online!
Die oberste Zeile drückt und druckt jedes Zeichen der Eingabe. Die zweite Zeile (vor der
@
) gibt den Stapel in umgekehrter Reihenfolge aus, aber wir geben die Bedingung ein_
, um das -1 zu verbrauchen, das nach dem Lesen der Eingabe generiert wird. Die andere Hälfte des Codes (einschließlich dieser hässlichen, nachgestellten Zeilenumbrüche) macht die Quelle zu einem Palindrom, läuft aber trotzdem.quelle
C # (
3332 + 1) * 2 =6866 Bytes2 Bytes für die Verwendung von .Aggregate () gespart
Oh, der gute alte Lambda, mit dem du es fangen kannst
und dann mit anrufen
quelle
Perl, 45 Bytes
Ziemlich einfach,
print
s die Eingabe ($_=<>
), gefolgt von derreverse
davon.reverse
wird zurückgegeben,$_
weil wir es im skalaren Kontext verwenden, indem wir ein Präfix mit eingeben~~
. Dann stimmen wir überein (m//
mit;
als Trennzeichen) im leeren Kontext mit der Umkehrung des Skripts .Wenn wir garantieren können, müssen wir kein Palindrom erstellen.
esrever,><=_$tnirp
Wir können den Code auf 43 Bytes verkürzen :Verwendung
Perl, 26 Bytes
Beinhaltet 25 Byte Code + 1 für
-p
.Ich denke nicht, dass dies gültig ist, da es das
-p
Flag erfordert, von dem ich glaube, dass es nicht einfach mit dem Skriptinhalt kombiniert werden kann, um ein echtes Palindrom zu erzeugen. So ziemlich die gleichen Aufrufe wie oben, außer dass es sich um die Tatsache handelt, dass-p
auch a hinzugefügt wird;
hinter die Kulissen (auf neuere Perls ...) zum Schließen desm//
.Verwendung
quelle
Pyth, 15
Beachten Sie das Leerzeichen am Anfang und am Ende.
Ziemlich nervige Aufgabe in Pyth.
z_z
druckt das gewünschte Palindrom, druckt aberz
(die Eingabezeichenfolge) und_z
das Inverse in zwei verschiedenen Zeilen.+
kombiniert die beiden Wörter,+
erfordert aber am Ende zwei neue Aussagen am Ende (und am Anfang). Ich wählek
undk
, das sind nur leere Zeichenfolgen. Dann viel weißer Raum, der das Drucken unterdrückt (und leere Räume, die natürlich Zeilenumbrüche erzeugen).Da der Leerraum jede Ausgabe außer dem unterdrückt
+z_z
, können Sie dask
s und das Literal durch arity 0 ersetzen . ZB1 2+ z_z +2 1
oderT Z+ z_z +Z T
.Probieren Sie es online aus .
quelle
Javascript, 137 Bytes
Ich verwende nicht den "Kommentar-Trick", aber ich verwende den "Escape-Anführungszeichen-Trick" lol.
quelle
";
. Das Hinzufügen eines;
als letztes Zeichen in der Zeichenfolge sollte dies beheben.JavaScript, 58 Byte
quelle
PHP, 28 + 1 + 28 = 57 Bytes
Nimmt Eingaben vom Kommandozeilenargument entgegen. Zitat für Multi-Word, Escape-Zeilen für Multi-Line.
quelle
Python 2, 51 Bytes
Ich bin überrascht, dass niemand daran gedacht hat! Benötigt eine Eingabe in Anführungszeichen (
'
oder"
). Wenn Funktionen erlaubt wären, hätte ich dies stattdessen für 37 Bytes tun können:quelle
C ++ 14,
152116 BytesWie unbenannte Lambda nimmt
s
zustring
Alte Lösung:
Verwendung:
quelle
05AB1E , 5 Bytes
Probieren Sie es online aus.
Erläuterung:
Oder alternativ:
Probieren Sie es online aus.
Wo
R
ist umgekehrt, und das«
nimmt die Eingabe implizit wieder auf, um mit zu konkatieren.HINWEIS: Wenn wir
neverodoreven
für die Eingabeneverod
, die immer noch ein Palindrom ist, eine Ausgabe durchführen dürfen , kann dies stattdessen in 1 Byte mit der integrierten Funktion palindromize erfolgen:Probieren Sie es online aus.
quelle
x86-64-Assembly (Microsoft x64-Aufrufkonvention), 89 Byte:
Zerlegt:
Beachten Sie, dass der Code nach der
ret
Anweisung unter2C
nicht erreichbar ist, sodass es keine Rolle spielt, dass es sich um Unsinn handeltquelle
Japt , 4 Bytes
Probieren Sie es online!
Wie es funktioniert
Alternative 4 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Rückhand ,
3327 BytesProbieren Sie es online!
Im Gegensatz zu vielen anderen Lösungen hier ist dies tatsächlich eine Fall den palindromisierte Code verwenden!
Erläuterung:
Insgesamt sind die nicht ausgeführten Anweisungen:
quelle