Ihre Aufgabe ist es, ein Programm oder eine Funktion zu schreiben, die bei jeder Ausführung das erste Zeichen ihres Quellcodes, das zweite und das dritte ausgibt.
Wenn Ihr Programm beispielsweise in einer Datei foo
in einer Sprache bar
vorliegt baz.bar
, sollten Sie eine Ausgabe ähnlich der folgenden erhalten:
λ bar baz.bar
f
λ bar baz.bar
o
λ bar baz.bar
o
Ihr Programm kann alles tun, sobald es seinen Quellcode auf diese Weise gedruckt hat. Sie können den Quellcode für die Datei ändern, denken Sie jedoch daran, dass der zu druckende Quellcode der ursprüngliche Quellcode ist.
Dies ist ein Code-Golf, also gewinnt das kürzeste Programm in Bytes.
Antworten:
Gelee , 12 Bytes
Dies ist eine Niladische Verbindung. Probieren Sie es online! (Enthält Code zum zwölfmaligen Aufrufen des Links.)
Wie es funktioniert
Als zusätzlichen Bonus ist das Register nach dem zwölften Aufruf wieder falsch und der Link kann von vorne beginnen, da es eine leere Zeichenfolge enthält. Wenn Sie den Link 24 Mal aufrufen, wird der Quellcode zweimal ausgegeben, 36 Mal usw.
quelle
¢
), die Identitätsfunktion (¹
die nach dem ersten Aufruf nicht wirklich benötigt wird), setzen Sie den Rückgabewert auf Zeilenvorschub (⁷
gibt implizit den vorherigen Rückgabewert aus), und wiederholen Sie den Vorgang.¹
und⁷
sind beide hochgestellt, aber sie haben nichts miteinander zu tun. Ich habe sie durch die weniger verwirrenden ersetzt¢;¢;¢;¢;¢;¢;¢;¢;¢;¢;¢;¢
(aufrufen, verketten, wiederholen).Javascript - 26 Bytes
Definiert,
f()
dass der Quellcode zeichenweise zurückgegeben wird.Gibt undefined zurück, nachdem die Zeichen aufgebraucht sind.
quelle
gestapelt , nicht konkurrierend, 34 Bytes
Eine Variation der Standard-Quine. Dies ist ein volles Programm. Hiermit wird ermittelt
execCounter
, wie oft dieses Programm speziell ausgeführt wurde. Fehler nach der Ausgabe alles.Probieren Sie es hier aus!
quelle
Pip , 31 Bytes
Eine anonyme Funktion. Testen Sie es auf TIO!
Erläuterung
Beginnen Sie mit diesem Standard-Pip-Quine:
Wickeln Sie dies in geschweifte Klammern, um es zu einer Funktion zu machen. Anstatt nun die gesamte Quelle zurückzugeben, müssen wir sie indizieren. Wenn Sie eine globale Variable für den Index verwenden und jedes Mal inkrementieren, wird die Anforderung erfüllt, dass jedes Mal, wenn der Index aufgerufen wird, das nächste Zeichen verwendet wird.
v
ist der beste Kandidat, weil es vorinitialisiert ist-1
. Wenn Sie es das erste Mal inkrementieren, erhalten Sie einen Index für0
, das nächste Mal1
usw.Pip hat eine zyklische Indizierung. Sobald die Funktion das letzte Zeichen druckt, beginnt sie am Anfang von vorne.
quelle
Python, 90 Bytes
Eine Erweiterung des Standard Python Quine (Golftipps willkommen):
Dies ist eine Python- Generator-Funktion , dh, Sie iterieren darüber, und jede Iteration enthält das nächste Zeichen im Quellcode. Wenn alle Zeichen zurückgegeben wurden, stürzt dies mit ab
IndexError
.Fügen Sie zum Testen einfach dieses Skript an das Ende des Programms an:
Oder versuchen Sie es online!
quelle
*> <> ,
1321 BytesErstellt eine Datei mit dem Namen
\n
, um den Index zu verfolgen.Damit kann man vielleicht mehr Golf spielen, aber nichts springt sofort auf mich los ...
Ausgabe
Erläuterung
Inkrementelle Quine betrügen
Erläuterung
quelle
g
Anweisung."your code goes here;
für> <> verwenden und dann auf das n-te Mitglied auf dem Stack zugreifenMathematica, 91 Bytes
Kommentare sehr willkommen; Ich lerne immer noch, was Quines eigentlich sind.
Definiert eine Funktion, die wiederholt ohne Argumente aufgerufen wird. Nach dem 91. Aufruf wird ein großer Fehler ausgegeben und unbewertet zurückgegeben.
Es gab zwei Probleme zu lösen: Erstens wollte ich nur verwenden
StringTake[ToString[#0]<>"[]"]
,ToString[]
scheint aber die Anführungszeichen zu löschen; so musste ich ersetzen"[]"
durchFromCharacterCode[{91, 93}]
. Zweitens beginnen Mathematica-Variablen nicht initialisiert, sodass ich sie nicht aufrufen kann,++q
bevor sieq
definiert sind. Aus diesem Grund wird die InitialeIf[!NumberQ[q], q = 0]
benötigt.Irrelevante Coda: Während
NumberQ
ich nach oben schaute , erfuhr ich, dass Mathematica eine Funktion namensTrueQ
... hat, die, ja, zurückgibt,True
wenn das Argument istTrue
undFalse
wenn das Argument istFalse
! (Das Dienstprogramm gibt auchFalse
alle anderen Argumente zurück.)quelle
Microscript II,
4033 BytesEin Codeblockliteral, das einer Funktion am nächsten kommt:
Nach dem Ausführen wird es wieder
x
aktiviert, um das erneute Aufrufen zu vereinfachen.quelle
Bash (und zsh, ksh), 39 Byte
Sobald das Programm ausgedruckt ist, wird nichts mehr gedruckt.
Stellen Sie sicher,
0
dass das aktuelle Verzeichnis nicht vorhanden ist, und führen Sie Folgendes aus:quelle