Zielsetzung:
Codieren Sie zwei Programme, bei denen jedes Programm beide Quellcodes ausgibt, die pro Zeichen verschachtelt sind, wie ein Reißverschluss, ein Quine mit zwei Schlitzen. Die Ausgabe eines Double-Slit-Quine beginnt mit dem ersten Zeichen aus dem Quellcode des ersten Programms. Wenn der Quellcode eines der Programme kürzer als der des anderen ist, muss der Rest der Ausgabe mit dem Rest des längeren Quellcodes gefüllt werden.
Regeln:
- Sie können für beide Programme eine beliebige Programmiersprache verwenden, wobei für beide nicht dieselbe Programmiersprache erforderlich ist.
- Ihre Programme sollten keine Eingaben von einer Datei, einem Dateinamen, einem Netzwerk, dem anderen Programm oder etwas anderem übernehmen.
Obligatorische Kriterien:
- Es gibt einen Haken, irgendwo in der Ausgabe muss das Wort
QUINE
in Großbuchstaben ununterbrochen existieren. - Sie müssen angeben, welche zwei Programmiersprachen Sie verwenden. Wenn Sie für beide dieselbe Programmiersprache verwenden, müssen Sie nur eine Programmiersprache angeben.
- Beide Programme sollten unabhängig vom anderen Programm ausgeführt bzw. interpretiert werden können.
Beispiel:
Mit diesem Beispielquellcode von Programm eins :
"QIE"
Mit diesem Beispielquellcode von Programm zwei :
"UN"
Dann muss die gültige Double-Slit-Quine-Ausgabe beider Programme sein:
""QUINE""
Dies ist Code-Golf, die kleinsten Bytes beim Summieren der Länge beider Quellcodes und natürlich auch der Länge jedes ausgegebenen Programms gewinnen!
A
undXYZ
verschachtelt werden?AXYZ
?.+
oderz
funktioniertAntworten:
CJam,
4947 Bytesund
beide drucken
Probieren Sie es online aus: Programm 1 , Programm 2 , Gültigkeitsnachweis
Wie sie arbeiten
Programm 1 endet hier und enthält eine Zeichenfolgendarstellung des gesamten Quellcodes (der jedes Zeichen zweimal wiederholt) sowie die Zeichenfolge e # QUINE auf dem Stapel.
Programm 2 analysiert zusätzlich
e#QUINE
, was ein Kommentar ist.In beiden Fällen druckt CJam die beiden Zeichenfolgen automatisch aus, was zu der oben genannten Ausgabe führt.
quelle
Im Ernst,
465642 BytesHex Dump:
Das zweite Programm ist genau dieses umgekehrte Programm. Es enthält zwar ein unsichtbares Zeichen, aber die Anzahl der Bytes ist korrekt. Beide Programme geben diese palindromische Zeichenfolge aus:
(Aus irgendeinem Grund wird das unsichtbare Zeichen angezeigt, wenn es in meinem Terminal ausgegeben wird. Ich verstehe dieses 7F-Byte nicht wirklich.)
Wie es funktioniert:
Der Rest des Programms wird nicht ausgeführt.
Dann die andere Richtung:
Zu diesem Zeitpunkt führen wir jetzt das erste Programm oben aus, sodass die Ausführung wie dort beschrieben fortgesetzt wird.
Ich nutze die Tatsache stark aus, dass mehrere Befehle hier nichts mit Strings oder leeren Stapeln zu tun haben. Ich nutze auch das unerwartete Verhalten aus,
t
wenn sich nur ein Element auf dem Stapel befindet. Erwarten Sie nicht, dass dieses Programm in zukünftigen Versionen von Seriously funktioniert.Da die Online-Version des Seriously-Interpreters weiterhin fehlerhaft ist, müssen Sie den Interpreter herunterladen und auf Ihrem eigenen Computer ausführen, um ihn zu testen.
quelle
GolfScript, 46 Bytes
und
beide drucken
Probieren Sie es online aus: Programm 1 , Programm 2 , Gültigkeitsnachweis
Wie es funktioniert
Der Quellcode von Programm 2 analysiert zusätzlich
QUINE\n
zwei undefinierte Token.quelle
Perl, 61 + 60 = 121 Bytes
Programm 1:
Programm 2:
Ich dachte, ich würde es in einer Sprache ohne Golf versuchen. Dies ist im Grunde nur ein universeller Quine-Konstruktor in Perl, der so modifiziert wurde, dass jedes Zeichen vor dem Drucken verdoppelt und
QUINE
an das Ende angehängt wird . Dann müssen wir nur noch einen Kommentar am Ende des Codes einfügen, um den hinzugefügten Text zu kompensieren.(Ich habe dies geschrieben, ohne wirklich auf die anderen Antworten zu achten. Es stellte sich heraus, dass es möglich wäre, ein Byte zu speichern, indem der gesamte Kommentar in ein Programm eingefügt wird, aber ich bin mir nicht sicher, ob ich solche Algorithmen einfach krass kopieren sollte.)
quelle