> <> 56 Bytes
^
.
+
8
f
0
o
a
o
~
:
?
~
:
?
:
-
*
4
8
:
^
^
}
*
3
d
'
Probieren Sie es online! oder überprüfen Sie alle Mutationen .
Wie das ursprüngliche Programm funktioniert (veraltet)
Der Interpreter startet in Zelle (0, 0) . ^
Setzt die Richtung nach oben , so dass der Anweisungszeiger (IP) in die Zelle (0, 20) übergeht .
'
Aktiviert den String-Modus: Bis zum nächsten '
Zeichen werden alle Zeichen unter der IP auf den Stack verschoben. Dasselbe '
wird nach dem Umwickeln wieder gefunden, also drücken wir
d3*}^^:84*=?~oao0f.^
Die IP landet bei (0, 19) und steigt weiter an. Die Ausführung d3*}
Schübe 13 = 0xd , dann 3 , vervielfacht beide Werte ( 39 / Apostroph ), dreht dann den Stapel auf der rechten Seite . Dies verlässt den Stapel wie folgt.
'd3*}^^:84*=?~oao0f.^
Die nächsten beiden Anweisungen ( ^
) tun an dieser Stelle nichts.
:84*=
dupliziert den oberen Teil des Stapels, drückt 8 und 4 , multipliziert sie ( 32 / Leerzeichen ) und testet dann das duplizierte Zeichen auf Gleichheit mit dem Leerzeichen . Für das unveränderte Programm wird immer 0 gedrückt .
?
Überspringt die nächste Anweisung, wenn die Oberseite des Stapels falsch ist. Für das ursprüngliche Programm ist es immer, also ~
wird es immer übersprungen.
oao
öffnet und druckt die Oberseite des Stapels, drückt einen Zeilenvorschub von 10 / , öffnet und druckt dann einen Zeilenvorschub .
Springt schließlich 0f.
zu Zelle (0, 15) (ganz unten ^
), beginnend mit dem nächsten Zeichen auf dem Stapel.
Sobald der Stapel leer ist, wurde der gesamte Quellcode gedruckt. :
schlägt fehl und das Programm wird beendet.
Wie die mutierten Programme funktionieren (veraltet)
Das Duplizieren von Nicht-Zeilenvorschubzeichen erweitert das Programm nur horizontal. Da das Programm vertikal ausgeführt wird, werden diese zusätzlichen Anweisungen niemals ausgeführt.
Das Duplizieren eines Zeilenvorschubs vor dem untersten ^
verschiebt die Zellen (0, 14) und (0, 15) nach (0, 15) und (0, 16) . 0f.
Springt nun in die Zelle vor dem untersten ^
, was auch ein ist ^
, so wird das Programm von der Verschiebung nicht beeinflusst.
Schließlich ändert auch ein doppeltes Zeilenvorschubzeichen die Zeichenfolge. Kurze Linien sind mit Leerzeichen aufgefüllt, so dass ein 32 / Raum wird in der Zeilenvorschubposition eingefügt werden. 84*=
wird 1 für Leerzeichen drücken , ?
überspringt also nicht die nächste Anweisung. In diesem Fall wird ein Leerzeichen~
eingefügt und verworfen , sodass im Folgenden stattdessen das Zeichen über dem Leerzeichen gedruckt wird .o
0
und00
in CJam beide ausgeben0
.