Erstellen Sie ein Programm, das sich selbst ausgibt.
Wenn der Quellcode jedoch n-mal wiederholt wird (was bedeutet, dass eine Kopie des Quellcodes n-mal bis zum Ende verkettet wird) , sollte eine 1 / n-Wahrscheinlichkeit für die Ausgabe des ursprünglichen Quellcodes vorliegen, eine 1 / n-Wahrscheinlichkeit für die Ausgabe der Quellcode wird zweimal wiederholt, eine 1 / n-Wahrscheinlichkeit für die Ausgabe des Quellcodes wird dreimal wiederholt, ... und eine 1 / n-Wahrscheinlichkeit für die n-fache Ausgabe des Quellcodes.
Wenn es sich beispielsweise um ein Programm handelt foobar
, sollte es immer genau ausgegeben werden foobar
. Wenn Sie jedoch laufen foobarfoobarfoobarfoobar
, dann sollte es eine ¼ Chance jeweils ausgibt foobar
, foobarfoobar
, foobarfoobarfoobar
und foobarfoobarfoobarfoobar
.
- Die Verteilung jeder möglichen Ausgabe sollte gleich sein
- Zusätzlich zu den angewendeten Standard-E / A-Methoden und den verbotenen Standardlücken gelten die Standard-Quine-Regeln (kann nicht auf die eigene Quelle usw. zugreifen).
- Dies ist Codegolf, also gewinnt die kürzeste Antwort in Bytes
foobarfoobar
) wiederholen, wird es nur gedrucktfoobar
foobarfoobar
wirdfoobar
zweimal wiederholt, nicht einmal.Antworten:
Perl 5 ,
8280 BytesProbieren Sie es online! oder Testsuite
quelle
Gelee ,
2422 BytesProbieren Sie es online!
Probieren Sie es x4!
quelle
05AB1E , 32 Bytes
Probieren Sie es online!
Erläuterung
quelle
Gol> <> , 21 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Alice , 35 Bytes
Probieren Sie es online!
Erläuterung
Wie in vielen Quines in 2D-Sprachen beginnt dies mit einem
"
Umlauf, der die gesamte erste Zeile mit Ausnahme der"
selbst verschiebt.Durch Hinzufügen einer oder mehrerer zusätzlicher Kopien des Quellcodes werden einige implizite Leerzeichen am Ende des Zeichenfolgenliteral eingefügt. Um dies tatsächlich zu einem Quine zu machen, kürzen wir den Stack auf 31 Zeichen.
Schieben Sie eine neue Zeile und dann die Stapelhöhe dreimal. Die als Stapelhöhe übertragenen Werte sind 32 (der Abstand in der zweiten Zeile), 33 (der Abstand in der zweiten Zeile)
!
und 34 (der Anfangswert"
).Schieben Sie die Stapelhöhe erneut, diesmal als Länge des ursprünglichen Quellcodes (35).
Initialisieren Sie einen Zähler auf 1. Dies zählt, wie oft der Quellcode wiederholt wird.
Dreimal nach rechts abbiegen (dh nach links abbiegen). Jede weitere Wiederholung des Quellcodes trägt
h
in derselben Spalte zu einer}
Erhöhung des Zählers bei. Wenn die IP-Adresse}
wieder angezeigt wird , biegen Sie erneut rechts ab, um in derselben Richtung fortzufahren.Nehmen Sie eine einheitliche Zufallszahl von 0 bis n-1 und addieren Sie dann 1, um die Anzahl der Ausgaben der Originalquelle zu erhalten.
Multiplizieren Sie mit der zuvor übertragenen Stapelhöhe (Codelänge) und wiederholen Sie das Folgende so oft, indem Sie eine Absenderadresse so oft minus eins übertragen.
Geben Sie die Oberseite des Stapels aus, ohne ihn zu zerstören.
Bewegen Sie den unteren Stapeleintrag nach oben.
Wiederholen und nach Beendigung der Schleife beenden.
quelle
JavaScript (Node.js) , 62 Byte
Probieren Sie es online!
quelle
Kohle , 58 Bytes
Probieren Sie es online! Keine ausführliche Version, da der Deverbosifier derzeit drosselt
"´"
. Hauptsächlich basierend auf dem Charcoal Quine von Golf ist Ihnen ein Quine zum großen Guten! . Erläuterung:Weisen Sie die Literalzeichenfolge
θ⎚×⊕‽L⊞Oυω⁺⪫⁺´≔θ´´θ
zuθ
.Löschen Sie alle vorherigen Ausgaben, damit nur die letzte Ausgabe wirksam wird.
Verschieben Sie die leere Zeichenfolge in das vordefinierte Array. Dadurch entspricht die Array-Länge der Anzahl der bisher verarbeiteten Wiederholungen. Nehmen Sie also die Länge und eine Zufallszahl als impliziten Exklusivbereich, addieren Sie 1 und wiederholen Sie die folgende Zeichenfolge so oft wie möglich.
Vorangestellt wird, die Zeichenkette
≔
zuθ
und setzen literal´
s zwischen jedem Zeichen, dann eine weitere Kopie von Suffixbeziehungenθ
.quelle