Ihr Ziel ist es, ein Programm zu erstellen, das sich auf unbestimmte Zeit mit jeweils einer neuen Zeile ausgibt. Wenn Ihr Programm also ein Einzeiler ist, wird es in jeder Zeile der Ausgabe wiederholt.
Beispiel
Programm:
A
Ausgabe:
A
A
A
...
Regeln
- Es muss ein vollständiges Programm sein, kein Snippet oder eine Funktion.
- Das Programm sollte eine Endlosschleife ohne Fehler durch Stapelüberlauf oder Rekursionslimit ausführen.
- Die Ausgabe erfolgt nach Standard oder nach der nächstgelegenen Alternative.
- Es werden keine Programmeingaben akzeptiert.
- Standardlücken sind nicht zulässig, z. B. das Öffnen der Programmdatei oder der Zugriff auf eine externe Ressource. Leere Programme sind als Standard-Regelungslücke nicht zulässig.
- Wenn Ihr Programmcode mit einem nachgestellten Zeilenumbruch endet, zählt dies nicht als der erforderliche Zeilenumbruch zwischen den Zeilenumbrüchen, und Sie müssen einen anderen drucken.
- codegolf - Kürzester Code gewinnt!
while(1)println(your_code)
;Antworten:
Spaltung, 7 Bytes
Eine ziemlich einfache Modifikation der kürzesten Fission quine, die ich bisher gefunden habe : Ich verwende einfach die zerstörungsfreie
!
anstelle vonO
undN
füge eine for newline hinzu.Alles in allem funktioniert es also so: Der Kontrollfluss beginnt
R
mit einem rechtsgerichteten Atom."
Schaltet den String-Modus um, was bedeutet, dass alles"
gedruckt wird, bis das nächste gedruckt wird: in diesem Fall'!+!NR
. Damit bleibt die"
und die neue Zeile zu drucken.'!
Setzt die Masse des Atoms auf 33,+
erhöht sie auf 34 (den Zeichencode von"
) und gibt!
das Zitat aus.N
druckt eine neue Zeile undR
ist in diesem Fall jetzt ein No-Op, so dass die Schleife von vorne beginnt.Die folgende 7-Byte-Lösung funktioniert auch:
quelle
> <> , 16 Bytes
Das traditionelle> <> Quine verwendet zu viele
o
s, daher verwenden wir eine Schleife zum Drucken. Vor jedem Sprung drücken wir 5 und 0 (die Koordinaten, zu denen gesprungen werden soll). Danach springen wir entweder mit,.
wenn noch etwas zu drucken ist, oder geben die beiden oberen Werte mit ein~~
.(Zurückgesetzt auf die 16-Version, da ich die Stapelüberlaufregel vergessen habe.)
quelle
"ar00go50l2)?.[
, richtig?d3*
dag
liest Ihr eigenen QuellcodeCJam, 13 Bytes
Der Online-Interpreter druckt nichts, bevor das Programm beendet wird. Sie müssen dies daher im Java-Interpreter testen.
Erläuterung
Endlich eine verallgemeinerte CJam-Quine, die nicht endet
_~
.Dies schiebt einfach einen Block.
_g
dupliziert den Block und führt ihn wiederholt aus, während der oberste Teil des Stapels wahr ist (Verwerfen der Bedingung).Jetzt im Block befindet sich die andere Kopie des Blocks noch auf dem Stapel. Wir duplizieren und drucken es mit
_o
und drucken dann_g
gefolgt von einem Zeilenumbruch (dem erforderlichen zusätzlichen Zeilenumbruch zwischen Quines) mit"_g\n"o
. Schließlich schieben wir ein1
auf den Stack, damit die Schleife wiederholt wird, da Blöcke in CJam leider nicht wahr (oder falsch) sind.quelle
Python 2, 39
Keine sehr interessante Aufgabe in Python, da es trivial ist, die while-Schleife zu einem normalen Quine hinzuzufügen.
quelle
Perl 5.10+,
4037 Bytesoder (auch 37 Bytes)
Rufen Sie mit dem Kommandozeilen-Flag
-M5.010
oder auf-E
, zVielen Dank an Ilmari Karonen für das Abschneiden von 3 Bytes meiner ursprünglichen Lösung, die lautete:
Dies sowie die kürzeren 37-Byte-Lösungen oben sind alles einfache Variationen des folgenden Quine, den ich zum ersten Mal in einem der anderen Beiträge von Ilmari gesehen habe :
Da alles, was ich in meiner ursprünglichen Lösung hinzugefügt habe, eine
while
Schleife war, verdient er wirklich den größten Teil des Kredits. :-)quelle
$_=q{say"\$_=q{$_};eval"while 1};eval
oder$_=q{{say"\$_=q{$_};eval";redo}};eval
wäre ein paar Bytes kürzer. ($_=q{say"\$_=q{$_};eval";eval};eval
wäre noch kürzer, aber ich vermute, es wird irgendwann aus dem Stapel laufen.)print
anstelle vonsay
).Selbstmodifizierendes Brainf *** (SMBF) , 14 Byte
Die nachfolgende Newline
\n
muss ein Literal, Unix, Newline (ASCII-Code 10) sein.Erläuterung:
Der Code verschiebt den Zeiger ganz links von seinem Quellcode und druckt dann alles aus, einschließlich der neuen Zeile (zweimal in umgekehrter Reihenfolge der Regel). Die Schleife geht weiter.
quelle
\r
?\n
ist eine neue Zeile und der ASCII-Code 10, sodass ein Hex-Dump des Quellcodes den Wert0A
für dieses Byte haben würde. code.cside.com/3rdpage/us/newLine.html\n
Zählt im Allgemeinen als 2 Zeichen und 2 Byte in Ihrem Code. Ich habe es aus Gründen der Lesbarkeit so geschrieben, da die Formatierung nicht gut funktioniert, um eine leere Zeile am Ende meines Quellcodes anzuzeigen. Und so musste ich angeben, dass es EIN Byte war, nicht zwei.\n
ist immer ein einzelnes Zeichen, das als Zeilenvorschub bezeichnet wird . Eine Newline ist jedoch eine plattformabhängige Folge von Bytes./
keinen "Solidus" und kenne niemanden, der das tut. "Newline" beginnt mit einemn
, und das ist das Escape-Zeichen, so nenne ich es. Es ist näher an "Zeilenvorschub" als an "Wagenrücklauf".PowerShell, 143 Bytes
Basierend auf dem Rosetta Code PowerShell Quine bin ich ziemlich sicher, dass dies nicht der kürzeste Weg ist. Das Formatieren von Zeichenfolgenersetzungen in PowerShell ist schwierig, da dieselben Begrenzungszeichen für die Position der Ersetzungen
{}
auch Codeblöcke begrenzen. Daherwhile{}
müssen wir[char]
Casting verwenden, das den Code ein wenig aufbläht.quelle
Unterlast, 25 Bytes
Zum ersten Mal habe ich so etwas ausprobiert und bin mir nicht sicher, ob ich alle Regeln befolge, da es sich um ein paar Zeilen handelt. Die Newline war ein bisschen schmerzhaft.
quelle
Befunge ,
3020 BytesEine Variation einer beliebten befunge quine, die eine neue Zeile ausgibt und -1 auf dem Stapel anzeigt, wenn sie die Zeile beendet.
Leider wird Befunge wortreich, wenn er Dinge in einer Zeile tut. Ich habe versucht, alle Launchpads (
#
) zu entfernen , die ich konnte, aber einige mussten belassen werden, um bestimmte Befehle (wie,
) zu überspringen .Änderungen:
30-20 -> habe das Basis-Quine in ein benutzerdefiniertes geändert, das Zeichenketteneingabe verwendet. Auf diese Weise wird die Verzweigung wesentlich erleichtert.
Alt:
Ich denke nicht, dass dies optimal ist, aber es ist vorerst akzeptabel.
quelle
98+2/
: <, + 55, + 2g1_ #!, #: <"-1g0:+5<>:#,_1"
K, 30 Bytes
quelle
R, 34 Bytes
So rufen Sie von der Befehlszeile aus auf:
quelle
> <>
3129 BytesEine einfache Modifikation des traditionellen > <> Quine .
Um es auszuführen, fügen Sie es hier ein , klicken Sie auf "Senden" und dann auf "Starten" (ohne Animation auszuführen, funktioniert nicht). Fühlen Sie sich frei, um die Ausführungsgeschwindigkeit zu erhöhen.
quelle
"ar00gc0.0+feooooooooooooooo|
ist zwei Bytes kürzer.Python 2, 48 Bytes
quelle
GolfScript, 16 Bytes
Am Ende sah das sehr nach Martin Büttners CJam-Eintrag aus . Ein interessantes Merkmal ist, dass, wie sich herausstellt, der kürzeste Weg,
".do"
an den Block anzuhängen , wenn er gedruckt wird, darin besteht, ihn dem Zeilenabschluss zuzuweisenn
. (Natürlich müssen wir auch eine tatsächliche neue Zeile in die Zeichenfolge einfügen, um dien
normalerweise enthaltene zu ersetzen .) Die gleiche Zeichenfolge (die in GolfScript der Wahrheit entspricht) verbleibt auch auf dem Stapel, damit diedo
Schleife abspringt, um sicherzustellen, dass die Schleife abläuft läuft für immer.quelle
BASH, 76 Bytes
Ich konnte einfach nicht widerstehen, besonders mit PowerShell hier :)
Das Leerzeichen ist wichtig für eine EXAKTE Kopie.
quelle
Javascript (ES6), 64
Alternativ (auch 64)
quelle
arguments.callee
es nicht existiert und ein Fehler ausgegeben wird.!
Klammern zu vergleichen und die Funktionsausführung nach der for-Schleife zu setzen, um die Notwendigkeit des Semikolon-Körpers for-Schleife zu vermeiden, der (glaube ich) 4 Bytes sparen würdeMikroskript , 22 Bytes
Basierend auf dem quine aus dem Esolangs Artikel:
"fCqxah"fCqxah
. Nutzt die Tatsache aus, dass die Sprache nach Bedarf automatisch schließende geschweifte Klammern anfügt, ohne die dies zwei Bytes länger wäre.quelle
Batch, 10 (+ 4 für Dateinamenlänge)
Ich bin mir nicht sicher, ob dies zwei Gründe hat:
Der Code (für ein Programm mit dem Namen q.bat):
quelle
echo on&&%0
obwohl ich Angst habe, es zu versuchen.echo on&&%0
funktioniert nicht.%0
wird in der Ausgabe als erweitert angezeigt und Windows (7, 32 Bit, ausgeführt in einer VM) beendet das Ganze ziemlich schnell..bat
Teil weglassenCeylon ,
210 bis208 BytesNatürlich wird das nichts gewinnen ...
Original:
shared void u(){value q="\"\"\"";value t="""shared void u(){value q="\"\"\"";value t=""";value b="""while(true){print(t+q+t+q+";value b="+q+b+q+";"+b);}}""";while(true){print(t+q+t+q+";value b="+q+b+q+";"+b);}}
Ich habe meinen Quine von vor zwei Tagen durch Hinzufügen der
while(true){...}
Schleife geändert , sodass ich von den 185 Bytes des einfachen Quine auf 210 komme (ich brauche das abschließende neue Zeilenzeichen nicht mehr). Aber dann fand ich, dass awhile(1<2){...}
Schleife sogar zwei Bytes kürzer ist:shared void u(){value q="\"\"\"";value t="""shared void u(){value q="\"\"\"";value t=""";value b="""while(1<2){print(t+q+t+q+";value b="+q+b+q+";"+b);}}""";while(1<2){print(t+q+t+q+";value b="+q+b+q+";"+b);}}
(Ceylon hat keine
for(;;)
Schleife wie Java, und die geschweiften Klammern werden auch für diese Schleife benötigt.)quelle
PowerShell,
132107 BytesBasierend auf dem Rosetta Quine (wie @AdmBorkBork), obwohl keine Formatierung für das Ersetzen von Zeichenfolgen verwendet wird. Wäre es am besten, auf eine for-Schleife zu wechseln und die Formatierung zu verwenden?
Ich bin mir sicher, wenn AdmBorkBork zurückkehren würde, würden sie dies um einiges übertreffen: P
EDIT Hat die for-Schleife und die Ersetzungen herausgefunden, alles dank meinem Vorgänger :)
Alter Versuch:
quelle
Ruby,
4139 BytesEine Modifikation einer der hier gefundenen Ruby-Quines .
quelle
Java 10, 194 Bytes
Erläuterung:
Probieren Sie es online aus (Timeout nach 60 Sekunden).
quine -Teil:
s
enthält den unformatierten Quellcode.%s
wird verwendet, um diesen String in sich selbst mit dem einzugebens.format(...)
.%c
,%1$c
Und die34
werden verwendet , um die doppelten Anführungszeichen zu formatieren.s.format(s,34,s)
setzt alles zusammenHerausforderungsteil:
for(;;)
wird verwendet, um eine Endlosschleife auszuführen.System.out.println(...)
wird verwendet, um mit einer nachgestellten neuen Zeile zu druckenquelle
Funky , 29 Bytes
Probieren Sie es online!
quelle
RProgN 2 , 7 Bytes
Probieren Sie es online!
quelle
Jelly , 14 Bytes
Probieren Sie es online!
quelle
Pyth, 11 Bytes
Probieren Sie es hier aus!
quelle
Brachylog , 16 Bytes
Sie können es nicht ganz online ausprobieren , aber ich habe überprüft, dass es in meiner Installation funktioniert.
Brachylog , 18 Bytes
Probieren Sie es online!
Angepasst an die alternative Version dieses Quines , mit einem Backtracking-Hack, den ich ursprünglich für alles Mögliche entwickelt hatte . Verbraucht zwei Bytes,
~n
daẉ
(die übliche Methode zum Drucken mit einer nachgestellten Zeile) bei der Zeichencodierung in TIO einige ungewöhnliche Probleme auftreten und eine tatsächliche Zeile, die in das Zeichenfolgenliteral eingefügt wird, durchgedruckt wird~k
als\n
.Da
w₁
Eingaben als Liste verwendet werden[string to be formatted, formatting arguments]
, können Sie eine Zeichenfolge in eine Listeg
einschließen und sie dann mit sich selbstj
verknüpfen, um sie mit sich selbst zu formatieren. Und da dem Programm keine Eingabe gegeben wird, kann die zu Beginn des Programms implizit vorhandene Eingabevariable einen beliebigen Wert annehmen, sodass sie auf eine der unendlich vielen Listen beschränkt werden kann, die"∋~kgjw₁⊥~n"
als Element eine einzige Liste enthalten Auswahlpunkt, zu dem zurückverfolgt werden soll, wenn das Programm nach dem Drucken der Quelle einen Treffer erzielt⊥
.quelle
Python 3.6,
4843 Bytes.-5 Bytes dank @Jo King
quelle
%r
, um zu sparen, dass diese'
s ausgeblendet werden. 43 BytesGol> <> , 10 Bytes
Probieren Sie es online!
Dies kann wahrscheinlich mehr Golf gespielt werden
quelle