> <> 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
0und00in CJam beide ausgeben0.