Sie müssen ein Programm erstellen, das unendlich viele Klone von sich selbst erstellt, bis es gestoppt wird. Was auch immer im Originalprogramm ist, muss in den Klonen sein. Mit anderen Worten, die Klone und das ursprüngliche Programm sind in jeder Hinsicht gleich, mit der Ausnahme, dass sich die Klone nicht in demselben Dateityp wie der Quellcode befinden müssen (es können Textdateien sein).
Beispiel:
Wenn mein ursprüngliches Programm ist:
for i in range(0, 10):
print i
Der Klon muss auch sein:
for i in range(0, 10):
print i
Regeln und Erläuterungen:
Standardlücken sind verboten
Die Klone müssen die exakte Kopie des Originals sein
Die Klone müssen lesbare Dateien sein, die ausgeführt werden können, wenn sie in den richtigen Interpreter eingefügt werden
Das Programm kann seinen eigenen Quellcode lesen
Alle Klone müssen separate Dateien sein
Das Ausdrucken Ihres Programms ist nicht gestattet
Dateinamen zählen zur Anzahl der Bytes
Die Klone müssen sich nicht im selben Verzeichnis wie die Quelldatei befinden und dürfen auch nicht denselben Dateinamen haben
Es sollten mindestens 1000 Klone erstellt werden können
Gewinnen:
Die wenigsten Bytes gewinnen!
quelle
yes `<$0`|split -1
viel besser, aber das verdoppelt die Byteanzahl ...Batch, 32 Bytes
@
Wird nicht verwendet, da STDOUT nicht eingeschränkt ist.%1
Der Standardwert ist die leere Zeichenfolge. Sie wird alson
zum1
ersten Mal und erhöht sich bei jedem Durchgang. Alternativ könnte dies für 28 Bytes funktionieren, aber ich habe keine Ahnung, wie zufällig es%random%
tatsächlich ist, wenn es wie folgt verwendet wird:quelle
%random%
basiert auf der aktuellen Zeit und kann Werte zwischen 0 und etwas über 32.000 generieren.%random%
ist eine Variable, die beim Zugriff eine Zufallszahl wie @ user2428118 ergibt, erwähnt.Bash,
25,16,1211 BytesEDITS:
$!
als Dateinamen (wird alle ~ 32k Dateien wiederverwendet, aber das ist jetzt erlaubt), -4 BytesGolf gespielt
Erklärt
Erstellt sich vor dem Kopieren als Hintergrundjob mit & neu, sodass jede Iteration unter ihrer eigenen PID ausgeführt wird.
Verwendet die letzte Job-PID als Dateinamen.
Dies kann unbegrenzt (oder bis zum Stoppen) ausgeführt werden, verwendet jedoch ca. 2 Klondateinamen. alle ~ 32k Iterationen.
Es könnte ein bisschen böse sein zu töten, aber AFAIK verstößt nicht gegen die Regeln.
Probieren Sie es online!
quelle
&
. tio.run/nexus/bash#VY5BS8NAEIXP7q943W5tq6QpelMRRCIIGg/…Ruby,
78 Bytes,7743 + 4 (Dateiname: a.rb) = 47 Bytes43 Bytes + Name / Danke an @Alexis So viel kürzer !!!
Das ist ungefähr so gut wie ich denke, es wird noch besser
73 Bytes + Name / Danke an @Alexis Anderson
74 Bytes + Name
Dies ist meine erste Ruby-Antwort, daher sind alle Verbesserungen willkommen.
quelle
sh, 24 Bytes
quelle
C #,
104102 Bytes-2 Bytes dank Berkeleybross
Nein, es ist nicht die kürzeste. Aber es ist C #. Was hast du erwartet?
quelle
File.Copy
. Wechseln Sie in eine for-Schleife, damit Sie die int-Deklaration einfügen und das1>0
Teil entfernen können . Undi
File.Copy
class P{static void Main(){for(int i=0;;)System.IO.File.Copy("c.cs","c"+ ++i+".cs");}}
c.cs
das nicht, weil es nicht im Ausgabeverzeichnis ist und dort manuell kopiert werden muss. Wie funktioniert das?$"c{++i}.cs"
ist 2 Bytes kürzer als"c"+ ++i+".cs"
Verarbeitung, 55 + 5 (Dateiname) = 60 Byte
Ich weiß nicht, ob der Dateiname als zusätzliche Bytes zählt
So ziemlich eine Reihe von Buildins, die alle miteinander verkettet sind
Erläuterung
quelle
ForceLang + das ForceLang-JS-Modul , 162 Byte
quelle
Python 2, 54 Bytes
quelle
import sys
?Mathematica, 41 Bytes
Volles Programm. Kopien seiner eigenen Quelldatei in
0
,1
,2
etc. im aktuellen Verzeichnis.quelle
PHP,
9160 Bytes31 Bytes dank manatwork gespart
Verwendung:
$ php f.php
Klonenf.php
und seinen Code unendlich sich Dateinamen wie Reproduktion1
,2
,3
... bis Timeout.Vorherige Version:
Verbrauch:
$ php f.php
Klonenf.php
und deren Code Wiedergabe unendlich selbst magf1.php
,f2.php
,f3.php
... ,f(n).php
bis Timeout.quelle
<?for(;;)file_put_contents(++$i,file_get_contents("f.php"));
awk, 29 (21) Bytes,
awk ist nicht wirklich das Werkzeug dafür, da es benötigt wird,
close()
wenn es auf unbestimmte Zeit läuft. Ansonsten entstehen nur leere Dateien.Wenn die Anzahl der Klone ein Limit hatte, zum Beispiel 5:
Das Programm wäre 21 Bytes.
Fügen Sie das Programm in eine Datei ein
a
und führen Sie Folgendes aus:quelle
Python, 69 Bytes
Ich habe versucht,
a
für den Dateinamen zu verwenden, aber (nicht überraschend) Windows mag keine Dateien mit dem Namena=open(__file__).read()\ni=0\nwhile 1:i+=1;open(
i+'.py','w').write(a)
. Ich habe es auch versucht:Allerdings gibt es mir diesen Fehler:
Es werden 83 Dateien erstellt, aber das entspricht noch nicht einmal den 1000 benötigten.
Wenn Sie diese Dateien entfernen möchten, können Sie dies verwenden:
quelle
RBX.Lua, 14 Bytes
IST DIES AUCH EIN DATEISYSTEM, DAS ICH NICHT KENNE
Klont sich selbst. Wenn es instanziiert wird, wird es erneut ausgeführt, wodurch eine automatische Rekursion bereitgestellt wird.
quelle
JavaScript ES6 34 Bytes
Nicht sicher, ob das zählt, aber hier:
quelle
Python 2, 61 Bytes (Unix) 65 (plattformübergreifend)
Unix - 61 Bytes
Unter Unix cp ist der Befehl systems copy-file -. Wenn ich die Konsole über Popen benutze, kann ich die Datei mit cp kopieren. Neue Dateien erscheinen im Verzeichnis für alte Dateien.
CrossPlatform - 65 Byte
Dies funktioniert, da standardmäßig offenes Lesen erlaubt.
Funfact: Ersetzen Sie
1:i+=1
miti:i-=1
und es wird bei i Kopien aufhören.Abgesehen davon sehe ich keine Möglichkeit, es kürzer zu machen als @muddyfish es tat.
quelle
C 80 Bytes
Druckt sich selbst, bis Sie es töten. Nur eine Standard-C-Quine mit einer Endlosschleife.
quelle