Ein Palindrom ist eine Zeichenfolge, die vorwärts und rückwärts gleich ist, z. B. "Rennwagen".
Schreiben Sie ein Programm in einer Sprache L, das ein beliebiges Programm P1 in Sprache L als Eingabe verwendet, und geben Sie ein palindromes Programm P2 in Sprache L aus, das dasselbe wie P1 ausführt.
Sie müssen sich nicht um die Behandlung von Eingabeprogrammen mit Syntaxfehlern kümmern.
Dies ist Codegolf , daher gewinnt die Lösung mit der geringsten Anzahl von Bytes.
code-golf
palindrome
Peter Olson
quelle
quelle
x=input();print(x+'#'+x[::-1])
. Die Untermenge ist die Menge aller Programme, die keine Zeilenumbrüche enthalten.Antworten:
Perl,
5554 BytesLiest die Programmquelle von stdin und schreibt nach stdout.
Ergebnis des Laufens auf sich selbst:
quelle
__DATA__
.print while(<DATA>);\n__DATA__
wird das Verhalten ändern.__DATA__
. :)Java, 225 Bytes
Ausgabe auf sich selbst (wenn vorher verschönert):
quelle
Python 2, 68 Bytes
Funktioniert nicht, wenn IDLE ausgeführt wird, da Sie ein EOF-Zeichen generieren müssen, um zu verhindern, dass das Programm auf Eingaben wartet.
Ausgabe, wenn auf sich selbst ausgeführt:
Vielen Dank an Greg Hewgill, der geholfen hat, Probleme zu lösen und Golf zu spielen.
quelle
GolfScript,
109 BytesÄhnlich wie die Minitech-Lösung , funktioniert aber gut mit Zeilenumbrüchen. Es beruht auf dem lustigen (undokumentierten) Verhalten von GolfScript, um ein nicht übereinstimmendes (und nicht kommentiertes)
}
sowie alles, was darauf folgt, zu ignorieren .Es wird fehlschlagen, wenn die Eingabe eine nicht übereinstimmende enthält
{
, aber dies würde technisch einen Syntaxfehler darstellen.Wie es funktioniert
Beispiel
quelle
1\n2#
(\n
wäre ein tatsächliches Newline-Zeichen) als Eingabe.x86-Maschinencode unter DOS (
.com
Datei) - 70 ByteMit .COM-Dateien umzugehen und ein Palyndrom zu erstellen ist einfach - da der COM-"Loader" den Inhalt der Datei nur an die Adresse legt
100h
und dorthin springt, muss das Programm sein Ende bereits fest codieren und alles danach ignorieren, damit wir es einfach anhängen können die Umkehrung der ersten N-1 Bytes (nur Vorbehalt: wenn das Programm irgendwie versucht, Tricks mit der Länge der Datei zu machen, bricht alles zusammen).Hier ist der Hex-Dump meiner
.COM
-Palyndromisierung.COM
:Es nimmt die Eingabedatei in die Befehlszeile und schreibt die Ausgabe auf stdout. die erwartete nutzung ist so etwas wie
compalyn source.com > out.com
.Kommentierte Versammlung:
Auf sich selbst getestet und die Lösungen für eine vorherige Frage scheinen in DosBox gut zu funktionieren, einige ausführlichere Tests auf "kanonischen" DOS-ausführbaren Dateien werden folgen.
quelle
GolfScript, 8
Behandelt keine Zeilenumbrüche, aber niemand verwendet diese in GolfScript.
quelle
Bash + Coreutils, 39 Bytes
Liest von STDIN und gibt an STDOUT aus:
quelle
( echo 'Hello, World!' )
. Bash ignoriert so ziemlich alles nach demexit
.Javascript ( ES6 ) Mehrzeilig - 71
Irgendwie hat Quincunx die Kommentarmethode hier gestohlen :
Einzeilig - 49
quelle
C ++
214209 BytesErgebnis des Laufens auf sich selbst:
quelle
Brainfuck, 749 ohne Leerzeichen (nicht golfen)
Dies erzeugt Brainfuck-Programme, die Palindrome spiegeln, dh sie sind Spiegelbilder von sich.
Ein gegebenes Programm gibt es aus
mit
PROGRAM
undMIRROR
ersetzt durch das Programm (ohne Nicht-Brainfuck-Zeichen) und dessen Spiegelbild.quelle
C 168
175Behandelt maskierte Zeilenumbrüche im Quellcode korrekt
1 Fehler behoben, wenn die letzte Zeile fehlt
2 Fehler behoben, wenn die Zeile innerhalb des Kommentars endet mit
*
: vor dem//
Kommentar ein Tabulatorzeicheneinfügen
C99 Standard, gültiger Code, viele Warnungen
Ungolfed
quelle
/* *<NL> */int main(){}
C # - 174
Testeingang:
Testausgang:
quelle
//
am Ende jeder Zeile stehen.PHP, 96 Bytes
Beispielnutzung:
Das ist nichts Schlaues. Es ist nur ein einfaches Stück Code, das den Job macht ... Ich hatte Lust zu spielen. Ich weiß, dass dieser Code mit schlechten Programmierpraktiken weit verbreitet ist!
Zum Schluss nehme ich gerne Kritik und Änderungen an diesem Code entgegen!
quelle
Cobra - 134
quelle
Schläger 133
Ungolfed (aber immer noch sehr wichtig):
Ausgabe bei Angabe der ungolfed version als Eingabe:
quelle