In dieser Quine-Variante muss Ihr Programm seinen Quellcode ausgeben, der über die Diagonale von links oben nach rechts unten transponiert ist. Beispielsweise:
Ihr Programm auf vier Zeilen
Ausgänge
yof
ono
u u
r r
p l
r i
o n
g e
r s
a
m
Das Leerzeichen in der Ausgabe ist nicht beliebig. Leerzeichen werden in zwei Situationen angezeigt: Wenn im Original ein Leerzeichen vorhanden ist (z. B. zwischen r
und l
in der vierten Spalte) und wenn Zeichen aufgefüllt werden müssen (z. B. alle Leerzeichen in der ersten Spalte). Beide sind erforderlich, und Leerzeichen können nirgendwo angezeigt werden sonst in der Ausgabe.
Ein einzelner nachfolgender Zeilenumbruch in der Ausgabe kann optional ignoriert werden. Nachfolgende Zeilenumbrüche im Quellcode haben keine Auswirkungen auf die Ausgabe, und führende Zeilenumbrüche im Quellcode müssen wie im obigen Beispiel behandelt werden. Angenommen, jedes Zeichen, das keine neue Zeile ist, ist eine Spalte breit und eine Zeile hoch, obwohl dies bei Zeichen wie tab zu einer hässlichen Ausgabe führen kann.
Ihre Lösung muss mindestens zwei Zeilen mit jeweils mindestens zwei Zeichen ohne Zeilenumbruch enthalten und darf keine eigene Transponierung sein (die Ausgabe kann nicht mit der Quelle identisch sein.)
Das Betrügen von Quines , die aus der Datei lesen, die ihren Quellcode enthält, Daten von einer URL abruft, integrierte Quining-Funktionen verwendet usw. ist nicht zulässig.
Dies ist Code Golf: Der kürzeste Code in Bytes gewinnt.
Antworten:
CJam, 14 Bytes
Testen Sie es hier.
Während kürzer, wahrscheinlich etwas weniger interessant als die Fission-Lösung.
Erläuterung
quelle
Spaltung , 17 Bytes
Immer noch meine Lieblingssprache für Quines ...
Probieren Sie es online aus!
Erläuterung
Dies ist dem grundlegenden Fission Quine ziemlich ähnlich . In der Tat, Regel „müssen mindestens zwei Leitungen mit mindestens zwei nicht-Zeilenumbrüche jeweils“ wenn es nicht für das war , konnte ich einfach umgesetzt haben , dass und ersetzen
R
mitD
. Diese Regel macht die Dinge allerdings etwas interessanter, da wir eine weitere Zeile drucken müssen.Der Kontrollfluss beginnt am
D
mit einem einzelnen Atom, das nach Süden geht. Da es auf das trifft"
, wird es umwickelt und gedrucktzu STDOUT, ähnlich wie bei der normalen Quine.
'!
setzt dann die Masse des Atoms auf den Zeichencode von!
. Das0
ist ein Teleporter, der das Atom zur zweiten Säule transportiert, wo es sich noch nach Süden bewegt.Mit
+
erhöhen wir die Masse des Atoms auf den Wert von"
.!N!
die Drucke Zitat, Zeilenvorschub, Zitat. STDOUT sieht jetzt so aus:Nach dem Umwickeln trifft das Atom ein anderes
"
und druckt nun die zweite Zeile wörtlich:Wir sind jetzt fertig. Das Atom benutzt den Teleporter erneut und landet in dem,
;
der ihn zerstört und dadurch das Programm beendet.Ich nehme an, das Schönste hier ist, eins
"
unten und das andere oben zu platzieren, damit ich sie auf einmal drucken kann, ohne den Wert von noch!
einmal einstellen zu müssen (weil es durch erneutes Aufrufen des String-Modus überschrieben würde).quelle
Javascript ES6, 90 Bytes
Nicht schlecht nicht schlecht.
Erläuterung
Hier ist das Standard-Quine-Framework:
Zum Ändern habe ich einfach die Quine-Zeichenfolge entlang Zeilenumbrüchen und Zeichen aufgeteilt, um eine Zeichenmatrix zu erstellen, die mit zwei Kartenfunktionen transponiert und zur Erstellung der Ausgabe zusammengefügt wurde.
quelle
Stax , 23 Bytes
Probieren Sie es online aus!
Anpassung der
"34bL"34bL
Quine, die auf einer Idee basiert, die in Quines in vielen Sprachen verwendet wird.quelle
Befunge-93 , 57 Bytes
Dies funktioniert, indem jedes Zeichen in der ersten Spalte des Stapels (mit Ausnahme des Zitats selbst) eingefügt und dann jedes Element vom Stapel gedruckt wird. Danach druckt es das Zitat, druckt eine neue Zeile und wechselt dann zur zweiten Spalte. Es funktioniert genauso, ohne eine neue Zeile zu drucken.
Sie können es über den Link im Titel testen, müssen den Code jedoch selbst kopieren und in das Fenster einfügen. Wenn Sie auf die Schaltfläche "Langsam" klicken, wird der Pfad des Zeigers und der Stapel angezeigt.
quelle
"
nur einmal zu generieren , so dass Sie etwas Code von der ersten Spalte in die zweite verschieben können.Python 2,
917569 BytesProbieren Sie es online aus
Erläuterung:
Dies verwendet eine Modifikation des Standardquins:
Nach der Modifikation:
Dies würde ausreichen, wenn eine einzelne Zeile zulässig wäre. Dann habe ich der 2. Zeile zwei Zeichen hinzugefügt, um diese Anforderung zu erfüllen. Das
#
Zeichen in der zweiten Zeile können durch alles ersetzt werden, solange Sie sie auch in der ersten Zeile ändern, und das Programm wird syntaktisch gültig.Um es jetzt richtig zu drucken, muss ich
#
am Ende der ersten beiden Zeilen drucken . Also entferne ich die ersten beiden Zeichen aus der Zeichenfolges
und drucke diese#
vor dem Drucken mits%s
. Ich habe eines der Zeichen#
am Anfang gesetzts
, um einige Bytes durch Entfernen eines Zeilenumbruchliterals zu sparen.quelle