Herausforderung
In dieser Herausforderung schreiben Sie das erste Programm, p 1 , einer unendlichen Folge von Programmen, in denen das Ausführen von p n das Programm p n + 1 ausgibt / generiert . Bei der Verkettung der ersten n> = 2 Programme sollte die Sequenz ausgegeben werden n
.
Beispiel
Nehmen wir an, die ersten 4 Programme sind:
p1 p2 p3 p4
Wenn ich laufen sollte p1
, sollte es Folgendes ausgeben:
p2
Wenn ich laufen sollte p1p2
, sollte es Folgendes ausgeben:
2
Wenn ich es ausführen p1p2p3p4
würde, sollte es Folgendes ausgeben:
4
Wenn ich laufen sollte p4
, sollte es das nächste Programm in der Reihenfolge erzeugen:
p5
Wertung
Ihre Punktzahl ist die Byteanzahl der ersten 10
Programme.
code-challenge
code-generation
Downgoat
quelle
quelle
p1p2p3...
immer von p1 bis pn sein ?Antworten:
Pyth, 12
p1:
p2:
1
p3:
1
etc..
p1p2p3:
Ausgabe:
3
Erläuterung:
Bei der ersten Ausführung wird die Länge einer einzelnen Zeichenfolge ausgegeben
1
. Dies ist zufällig auch ein gültiges Pyth-Programm, das1
erneut ausgegeben wird . Daher ist pn + 1 immer1
. Wenn die Programme verkettet sind, wirdp1
die Länge der verketteten Programme ausgegebenn
.quelle
Lua,
950900 BytesUngolfed:
Erläuterung:
Die erste Zeile erfasst die gesamte Programmquelle. Dann vergleichen wir die Länge des gesamten Programms mit 1 + der Länge eines einzelnen Programms. Wenn die Größe des aktuellen Programms kleiner als dieser Wert ist, wird die Quelle gedruckt. Dies ist das nächste Programm, p2, und wir beenden das Programm. Jede Iteration ist nur eine Quine. Wenn mehrere davon zusammengesetzt werden, schlägt die Bedingung fehl, und wir drucken die Länge des verketteten Programms geteilt durch die Länge eines Programms, dh die Anzahl der verketteten Programme, n.
quelle
Vitsy , 19 Bytes
Hier geht es nicht um Strings, sondern um Methodentricks.
p1
p2
p3
Und so weiter und so fort.
Erklärung unten:
Probieren Sie es online!
quelle
Vitsy , 14 Bytes
Ähnlich wie bei den Antworten von Pyth und Jolf ordne ich Strings zu. Der einzige Unterschied besteht darin, dass ich die Zeilenumbruch-Funktionen verwende, um sicherzustellen, dass ich immer die richtige Länge bekomme.
p1
p2
Ersetzen Sie 1 durch eine einzelne Zahl.
p3 und so weiter stimmen mit diesem Muster überein, und Sie können dies bis
Integer.MAX_VALUE
zur ganzzahligen Einschränkung der Sprache tun .Erläuterung:
Probieren Sie es online!
quelle
Im Ernst, 15 Bytes
Erstes Programm, 6 Bytes (enthält ein nicht druckbares):
Hex Dump:
Dieses Programm wird gedruckt
1
: Probieren Sie es online ausDer Rest der Programme ist allesamt
1
ein gültiges Programm, das sich genau wie die Pyth-Antwort ausgibt. Das ursprüngliche Programm druckt die Länge seines Quellcodes minus 5 und wird sofort beendet.1
s, die an das Ende angehängt werden, verlängern den Quellcode jedes Mal um 1 Byte, werden aber nie ausgeführt.quelle
Jolf , 14 Bytes
Probieren Sie es hier aus!
Bei der Ausführung wird dies gedruckt
1
. So istp2 = 1
.p2
Erträge ausführen1
. Also, für alleN > 1
,pN = 1
.Beachten Sie
p1p2
:a-1q41
. Dies überträgt sich auf:Da das implizite Drucken nach dem ersten Druck deaktiviert ist, wird dies gedruckt
2
, da die Länge des Quellcodes minus 4 2 beträgt. Und weiter und weiter und weiter.quelle
Ruby, 318 Bytes
p 1 :
Jede separate Programm P i gibt diesen einzeiligen quine:
_="_=%p;puts _%%_";puts _%_
.Wenn Sie diese Quines am Ende von p 1 anfügen , werden sie als Linien im
DATA
Objekt angezeigt, da sie sich unterhalb der Magie befinden__END__
.Hier ist ein Test:
Die zehn ersten verketteten Programme sehen folgendermaßen aus (318 Bytes):
quelle
C #, 2099 + 7 = 2106 Bytes
Erstes Programm (benutzt Compiler Flag
/main:A
):Zweites Programm:
Drittes Programm:
Du hast die Idee.
quelle
Javascript ES6, Ergebnis
483455Programm 1, 77 Bytes:
Programm 2 und höher mit jeweils 42 Bytes:
quelle
PHP, 1470 Bytes
Programm 1: 219 Bytes:
Programm 2 und mehr als 139 Bytes:
verwenden wie:
Verwendet eine leicht golfene Version der hier beschriebenen PHP-Quine-Technik: http://10types.co.uk/the-lab/a-minimal-php-quine/
quelle