Schreiben Sie ein Programm, das beim Ausführen seinen eigenen Quellcode ausgibt, und sonst nichts. Scheint einfach, oder?
Der Haken ist, dass Ihr Programm "Hallo Welt!" Ausgeben muss, wenn der Quellcode umgekehrt wird. genau, ohne die Anführungszeichen.
Dies ist Codegolf, daher gewinnt die niedrigste Bytezahl.
Bearbeiten : Ihre quine muss eine richtige quine sein.
code-golf
quine
source-layout
hello-world
ericw31415
quelle
quelle
Antworten:
Y, 19 Bytes
U
Erfasst eine Zeichenfolge mitU
am Anfang, bis die nächsteU
erfüllt ist, in diesem Fall der Quellcode.p
druckt das Objekt undx
ist ein Terminierungslink. In umgekehrter Reihenfolge sieht das so aus:Dies erfasst den String und druckt ihn mit aus
p
, wobei das Programm erneut mit beendet wirdx
.Probieren Sie es hier aus!
quelle
U
drücktU
implizit? ಠ_ಠU
Befehl der "Chain-Link-Capture-Befehl". Es ist nicht zum Quinieren gedacht, aber das hindert mich nicht daran, es zum Quinieren zu verwenden. : PU...
codiert , aber nur codiertU...
.p
Bit erledigt die Ausgabe, die Teil der Codierung war.p
undx
würde nicht zählen. Beispielsweise wird die kürzeste SMBF-Quine immer noch als Cheating-Quine betrachtet, obwohl der Code sie drucken muss. Es könnte sich jedoch lohnen, Martin um Klärung zu bitten.JavaScript (ES6),
4238 ByteRückgängig gemacht
Erläuterung
Wenn umgekehrt, wird es eine anonyme Funktion, die die Zeichenfolge zurückgibt
Hello, World!
.Der reguläre Ausdruck
/\//g
wird zu einem Kommentar, wenn er umgekehrt wird, wodurch der syntaktisch ungültige>=_=f
Code im umgekehrten Code auskommentiert werden kann.quelle
=_=
.JavaScript (ES6), 71 Byte
Wie es funktioniert:
Zeile 1 definiert eine Funktion
trela
, die beim Ausführen den Quellcode des Programms ausgibt. Zeile 2 ist eine nicht zugewiesene Zeichenfolge, die nichts bewirkt. In den Zeilen 3 und 4 wirdtrela
die Syntax der Vorlagenzeichenfolge missbraucht.Rückgängig gemacht:
Wie es funktioniert:
Zeile 1 ist eine nicht zugewiesene Zeichenfolge, die nichts bewirkt. Die Zeilen 2 und 3 missbrauchen die zu druckende Template-String-Syntax
Hello, World!
. Zeile 4 ist ein Kommentar.quelle
``
unnötig?trela
Funktion (die den Quine druckt) in der Vorwärtsversion``
die Argumente waren. Cool.trela
...> _>GolfScript, 33 Bytes
Vorwärts
Probieren Sie es online!
Rückwärts
Probieren Sie es online!
quelle
GolfScript,
2928 BytesEs gibt eine nachgestellte Newline. Probieren Sie es hier aus.
Rückgängig gemacht:
Probieren Sie es hier aus.
quelle
RETURN , 94 Bytes
Rückgängig gemacht:
Try it here.
Ausgänge zu STDOUT. Bis ich einen besseren Rahmen für Quines gefunden habe, muss dies vorerst tun.
Erläuterung
Dieser enthält den Quine-String. Umgekehrt wird dies auf den Stapel geschoben, aber nicht ausgegeben.
Dadurch wird ein Anführungszeichen in den Stapel verschoben und das Ergebnis zweimal ausgegeben, bis nichts mehr auszugeben ist. In umgekehrter Reihenfolge werden die bereits auf dem Stapel befindlichen Zeichencodes gedruckt.
Dieser öffnet das oberste Stapelelement (in umgekehrter Richtung würde dies ein Leerzeichen öffnen) und schiebt eine Reihe von Zeichencodes auf den Stapel (in umgekehrter Richtung würden diese Zeichencodes später durch die Reihe von gedruckt werden
,
).quelle
Spaltung 2, 42 Bytes
Schamlose Anpassung eines exzellenten Quines von @ MartinBüttner in dieser Antwort
Probieren Sie es online aus
Und umgekehrt
Probieren Sie es online aus
In der Quine-Version beginnt das Atom an der
R
Überschrift rechts. Damit wird"
der Druckmodus gestartet, der zum nächsten Druckmodus"
(selbst) übergeht . Dies druckt alles aus, mit Ausnahme der"
.'!+
setze das Atom auf char"
.O
druckt es aus und zerstört das Atom, wodurch das Programm beendet wird.Die umgekehrte Version beginnt
R
erneut und setzt für jedes ZeichenHello, World
das Atom und druckt!
es aus, ohne das Atom zu zerstören. Für das letzte Zeichen zerstört der!
AbdruckO
das Atom.quelle
Javascript ES6, 55 Bytes
Ganz einfach.
quelle
Python 2, 131 Bytes
Nach vorne:
Umkehren:
Die erste Hälfte ist ein einzeiliges Quine, gefolgt von einem
#
, um einen Kommentar zu bilden, der die erste Hälfte von der einfacheren zweiten Hälfte trennt.quelle
_='_=%r;print _%%_#"!dlroW ,olleH"tnirp';print _%_#"!dlroW ,olleH"tnirp
C 108 Bytes
quelle
Python 2, 70 Bytes
quelle