7 , 2 Bytes
Die Charaktere, aus denen dieses Programm besteht, sind:
240223
Wenn Sie die Datei in einem Editor anzeigen, wird wahrscheinlich versucht, sie als ASCII zu interpretieren. In diesem Fall sieht sie folgendermaßen aus:
P$
Probieren Sie es online aus!
Das Programm nimmt Eingaben entgegen. Ich habe hier angenommen, dass der Eingang bei EOF ist; Wenn Sie es eingeben, ist es möglich, dass es abstürzt.
Erläuterung
Zeroth-Iteration
240223
240223 Fügen Sie 240223 an das oberste Stapelelement an
Das gesamte Programm hier ist passiv, daher wird eine aktive Version von sich an das oberste Stapelelement angehängt (das anfangs leer ist). Das Programm befindet sich in einer impliziten Schleife, die das oberste Stapelelement bei jeder Iteration auswertet (während es auf dem Stapel belassen wird). Die aktive Version wird also ausgeführt. (So ziemlich alle 7 Programme beginnen so.)
Erste Iteration
240223
2 Kopieren des oberen
Stapelelements 40 Verlassen Sie das zweite Stapelelement und tauschen Sie es nach oben aus.
2 Kopieren Sie das obere Stapelelement.
23 Geben Sie das obere Stapelelement aus
Vor dem Ausgabebefehl enthält der Stapel zwei Kopien von 240223(dh passiv). Das oberste wird ausgegeben (ohne erkennbaren Effekt außer der Auswahl des Ausgabeformats 2, "Zahlen"), das folgende bleibt erhalten und wird zum Programm für die nächste Iteration.
Zweite Iteration
240223
240223 Fügen Sie 240223 an das oberste Stapelelement an
Das gleiche wie die nullte Iteration, richtig? Nicht ganz; Der Stapel hatte unterschiedliche Inhalte. Der Stapel ist jetzt 240223unten .240223240223
Dritte Iteration
240.223 240.223
240.223 Append 240.223 auf das obere Stapelelement
2 Kopieren des obere Stapelelement
40 das zweite Stapelelementes Flucht, es nach oben Swapping
2 Copy des oberen Stapelelement
23 Output des oberen Stapelelement
Dies gibt ein Stapelelement aus, das drei weitere 6s und 0s als 7s und 1s hat. Das Ausgabeformat 2 interpretiert dies als eine Anforderung zur Eingabe einer Zahl. Wir lesen EOF, mit der Folge, dass das nächste Element auf dem Stapel auf eine Zeichenfolge mit der Länge Null reduziert wird. Aufgrund eines Fehlers (der leicht nützlich erscheint und möglicherweise zu einer Funktion heraufgestuft wird?) Tritt dies jedoch erst auf, nachdem die Ausführung gestartet wurde. Der Stapel enthält 240223unten erneut zwei Elemente, aber die maskierte Version dieses obersten Elements wird jetzt ausgeführt.24022324022324022372402236240223240223
Vierte Iteration
7 240223 6 240223240223
7 240223 6 240223240223 Fügen Sie 240223 240223240223 an die Oberseite des Stapels an
Die Oberseite des Stapels war eine Zeichenfolge mit der Länge Null, sodass wir das Programm, das dort gelandet ist, im Grunde genommen nur entkoppeln.
Fünfte Iteration
240.223 240.223.240.223
240.223 Append 240.223 auf das obere Stapelelement
2 Kopieren des obere Stapelelement
40 das zweite Stapelelementes Flucht, es nach oben Swapping
2 Copy des oberen Stapelelement
23 Output des oberen Stapelelement
2 Kopieren des oberen Stapelelement
40 Flucht der zweiten Stapeln des Elements nach oben
2 Kopieren des oberen Stapelelements
23 Geben Sie das obere Stapelelement aus
Dies ist der dritten Iteration sehr ähnlich. Es gibt jedoch zwei Änderungen. Erstens gibt es jetzt 4 mehr 0s und 6s als 1s und 7s, also werden wir versuchen, ein Zeichen von der Standardeingabe anstelle einer Zahl einzugeben. Wir erhalten jedoch immer noch EOF und reduzieren dadurch immer noch die Oberseite des Stapels auf eine Zeichenfolge mit der Länge Null. Als nächstes wird nach der Reduzierung Code ausgeführt , sodass die nächste Iteration nicht sofort beginnt. Vielmehr führen wir eine Reihe von Operationen an diesem Element mit der Länge Null durch, die am Ende drei Elemente mit der Länge Null ergeben. Wir geben eins aus, die anderen beiden verschwinden (weil es das Ende einer Iteration ist) und wir landen im Grunde dort, wo wir am Ende der dritten Iteration waren.
Sechste Iteration
Das Programm, das wir von oben kopieren, ist jetzt . Alles funktioniert wie in der vorherigen Iteration, bis wir die erste Ausgabeanweisung (die erste ) erreichen. Dies hat jetzt fünf mehr 0s und 6s als 1s und 7s, so dass ein Modus festgelegt wird, in dem der nächste Ausgabeanweis als Anforderung zum Ändern des Ausgabeformats interpretiert wird. Dies führt auch zu einer bemerkenswerten Verhaltensänderung; Da es keine Eingabeanforderung gab, haben wir EOF nicht gelesen und somit nicht die Konsequenz des Lesens von EOF (das neue oberste Stapelelement wird ausgeblendet) ausgelöst. Daher bleibt die maskierte Version des ursprünglichen Stapelelements erhalten und nicht entfernt. Dies bedeutet, dass die nächste240223240223240223240223232402ist kein No-Op mehr und erstellt zwei maskierte Kopien des maskierten Stapelelements (dh sie sind jetzt doppelt maskiert). Wir geben eins aus und setzen das Ausgabeformat auf 7 ("wie die Eingabe"); Dieses Ausgabeformat enthält keine E / A-Befehle und keine Befehle zum Ändern des Formats. Daher bleiben wir für den Rest des Programms darin. Wir geben auch 724022362402232402232402232402236(in der gleichen Codierung wie die Eingabe) an die Standardausgabe aus.
Wie auch immer, es ist ziemlich klar, was das Programm von diesem Punkt an tun wird: Es ist eine Kombination aus dem Anhängen verschiedener Anzahlen von Kopien von unterschiedlich entkommenen 240223 an den oberen Rand des Stapels maskiert wurden, dem Escaping des oberen Randes des Stapels und dem Ausgeben von Kopien des oberen Randes des Stapels der Stapel. Ab diesem Zeitpunkt wird das oberste Stapelelement nie gelöscht (weil wir nie EOF lesen), also wächst es einfach und wächst und wächst. Das periodische Escapezeichen stellt sicher, dass sich die Ausgabe nie wiederholt (da dies bedeutet, dass bei jeder Iteration die erste Ausgabe mit mindestens einer mehr beginnt 7als bei der vorherigen Iteration).
1\n12\n123ungültig?