Вы должны создать программу, которая создает точные клоны себя бесконечно, пока не остановится. Все, что есть в оригинальной программе, должно быть в клонах. Другими словами, клоны и исходная программа одинаковы во всех отношениях, за исключением того, что клоны не обязательно должны находиться в файле того же типа, что и исходный код (они могут быть текстовыми файлами).
Пример:
Если моя оригинальная программа:
for i in range(0, 10):
print i
клон также должен быть:
for i in range(0, 10):
print i
Правила и разъяснения:
Стандартные лазейки запрещены
Клоны должны быть точной копией оригинала
Клоны должны быть читаемыми файлами, которые можно запустить, если поместить в правильный интерпретатор
Программа может читать свой собственный исходный код
Все клоны должны быть отдельными файлами
Печать вашей программы не разрешена
Имена файлов учитываются в количестве байтов
Клоны не обязательно должны находиться в том же каталоге, что и исходный файл, и не должны иметь одно и то же имя.
Должно быть создано не менее 1000 клонов.
Выигрыш:
Меньше байтов побеждает!
источник
yes `<$0`|split -1
намного лучше, но это удваивает количество байтов ...Пакетная, 32 байта
Не используется,
@
потому что нет ограничений на STDOUT.%1
по умолчанию используется пустая строка, поэтомуn
становится1
первым и увеличивается на каждый проход. В качестве альтернативы, это может работать для 28 байтов, но я понятия не имею, насколько случайным на%random%
самом деле является случай, когда используется так:источник
%random%
основан на текущем времени и может генерировать от 0 до чуть более 32 000.%random%
это переменная, которая при обращении выдает случайное число, указанное @ user2428118.Bash,
25,16,1211 байтправок:
$!
качестве имени файла (будет повторно использоваться каждые ~ 32k файлов, но теперь это разрешено), -4 байтаGolfed
Разъяснения
Повторно порождает себя как фоновое задание с & перед выполнением копирования, поэтому каждая итерация будет выполняться под своим собственным PID.
Использует последний PID задания в качестве имени файла.
Это может выполняться бесконечно (или до тех пор, пока не остановится), но будет повторно использовать имена клонов ок. каждые ~ 32к итераций.
Может быть немного неприятно убивать, но AFAIK не против правил.
Попробуйте онлайн!
источник
&
. tio.run/nexus/bash#VY5BS8NAEIXP7q943W5tq6QpelMRRCIIGg/…Ruby,
78 байт,7743 + 4 (имя файла: a.rb) = 47 байт43 байта + имя / Спасибо @Alexis Так намного короче !!!
это примерно так же, как я думаю, что он собирается получить
73 байта + имя / Спасибо @Alexis Anderson
74 байта + имя
Это мой первый ответ на Ruby, так что все предложения приветствуются.
источник
ш, 24 байта
источник
C #,
104102 байта-2 байта благодаря берклиброссу
Нет, это не самое короткое. Но это C #. Чего ты ожидал?
источник
File.Copy
. Перейдя в цикл for, вы сможете встроить объявление int и удалить1>0
деталь. И заранее приращениеi
вFile.Copy
заявлении, что дает вам 86 байт Я считаю , что:class P{static void Main(){for(int i=0;;)System.IO.File.Copy("c.cs","c"+ ++i+".cs");}}
c.cs
что не будет находиться в выходном каталоге и должно быть скопировано туда вручную. Как это работает?$"c{++i}.cs"
2 байта короче, чем"c"+ ++i+".cs"
Обработка, 55 + 5 (имя файла) = 60 байт
Я не знаю, считается ли имя файла как лишние байты
Довольно много встроенных цепочек
объяснение
источник
ForceLang + модуль ForceLang-JS , 162 байта
источник
Python 2, 54 байта
источник
import sys
?Mathematica, 41 байт
Полная программа. Копии его собственный исходный файл в
0
,1
,2
и т.д. в текущем каталоге.источник
PHP,
9160 байтSaved 31 bytes thanks to manatwork
Usage:
$ php f.php
clonesf.php
and its code reproducing infinitely itself in filenames like1
,2
,3
... until timeout.Previous version:
Usage:
$ php f.php
clonesf.php
and its code reproducing infinitely itself likef1.php
,f2.php
,f3.php
...f(n).php
until timeout.источник
<?for(;;)file_put_contents(++$i,file_get_contents("f.php"));
awk, 29 (21) байт,
awk на самом деле не инструмент для этого, поскольку он требуется
close()
при работе на неопределенный срок. Иначе все, что это производит, является пустыми файлами.Если количество клонов имело ограничение, например 5:
программа будет 21 байт.
Вставьте программу в файл
a
и запустите:источник
Python, 69 байт
Я попытался использовать
a
для имени файла, но (неудивительно), что Windows не любит файлы с именемa=open(__file__).read()\ni=0\nwhile 1:i+=1;open(
i+'.py','w').write(a)
. Я также попробовал это:Однако это дает мне эту ошибку:
Он создает 83 файла, но это даже не близко к необходимой 1000.
Если вы хотите удалить эти файлы, вы можете использовать это:
источник
RBX.Lua, 14 байтов
ЭТО ДАЖЕ ФИЛЬСИСТЕМА, Я НЕ ЗНАЮ
Сам клонирует. По мере того, как он запускается, он снова запускается, что обеспечивает автоматическую рекурсию.
источник
JavaScript ES6 34 байта
Не уверен, что это считается, но здесь:
источник
Python 2, 61 bytes (unix) 65 (cross-platform)
Unix - 61 bytes
On unix cp is the systems copy-file - command. Using the console via popen allows me to copy the file by cp. new files will spawn in old-files directory.
CrossPlatform - 65 bytes
This works, as open on default allows reading.
Funfact: replace
1:i+=1
withi:i-=1
and it will stop at i copies.Other than that, I see no way of making it shorter than @muddyfish did it.
источник
C, 80 bytes
Prints itself until you kill it. Just a standard C quine with an infinite loop.
источник