7 , 4 Bytes ASCII
1603
Probieren Sie es online!
Ich weiß, dass 7 normalerweise nicht in ASCII codiert ist, aber diesmal ist es eine bequemere Codierung, sodass wir bei jedem Lauf 1 Byte hinzufügen, nicht 3 Bits.
Ich bin mir auch nicht sicher, ob dies als Betrug gilt oder nicht. (Es ist normalerweise unklar, ob eine 7-Quine betrügt oder nicht, da sie auf verschiedene Weise die Grenze überspannt.) Sie können ein anständiges Argument dafür vorbringen, dass die Zeichen 0
codiert 6
, aber im Allgemeinen ist unklar, woher die resultierenden Zeichen kommen "in 7, weil es so viele, ziemlich bizarre, implizite Verhaltensweisen hat.
Dieses Programm druckt sich selbst mit 1
angehängten Zeichen und wird dies auch dann tun, wenn Sie eine Reihe von 1
s daran anhängen . Hier ist ein kommentierter Debug-Trace von 160311
:
|| 160311 Initial data ||; initial program 160311
||7 60311 1 command = append 7 to data
|1 0311 6 command = escape from the last | onwards (7 escapes to 1)
|16e77 0311 commands = append 6e77 to data
|16e77 16e77 Implicit (program is empty): copy data past last | to program
|16e777 6e77 1 command = append 7 to data
71603111 e77 6 command = escape from the last | onwards
71603111 e77 e7 command = output in same encoding as the source
(Es sind keine |
mehr im Programm, daher e
wird das Programm sofort als Nebeneffekt beendet, was bedeutet, dass das Finale 7
niemals ausgeführt wird.)
Die grundlegende Verwirrung darüber, woher alle Zeichen kommen, besteht darin, dass die meisten Befehle in 7 beim Ausführen nur Daten erzeugen und dann 6
versuchen, eine Folge von Befehlen zu rekonstruieren, die das gegebene Datenfragment erzeugen würden. Dies endet oft in der Nähe des Originals, ist jedoch nicht mit diesem identisch. (Zu Quining-Zwecken schreiben Sie normalerweise ein 7-Programm so, dass das Ergebnis fast gleich ist und sich normalerweise in führenden oder nachfolgenden Werten unterscheidet 7
.) So wird beispielsweise das 1
in den Daten 716
, was der einfachste Weg zum Anhängen ist 1
auf den aktuellen Datenstring. Wir haben es ursprünglich mit 16
einer anderen (aber ähnlichen) Zeichenfolge produziert und dabei eines der Zeichen destruktiv entfernt|
Marker, mit denen die Daten begonnen haben. (Ich denke, das beste Argument dafür, dass dies keine reine Quine ist, ist, dass sich die Ausgabe von der Eingabe unterscheidet!)