Você deve criar um programa que crie clones exatos de si mesmo infinitamente até parar. O que quer que esteja no programa original deve estar nos clones. Em outras palavras, os clones e o programa original são os mesmos em todos os aspectos, exceto pelo fato de que os clones não precisam estar no mesmo tipo de arquivo que o código-fonte (eles podem ser arquivos de texto).
Exemplo:
Se o meu programa original for:
for i in range(0, 10):
print i
o clone também deve ser:
for i in range(0, 10):
print i
Regras e esclarecimentos:
Lacunas padrão são proibidas
Os clones devem ser a cópia exata do original
Os clones devem ser arquivos legíveis que podem ser executados se colocados dentro do intérprete correto
O programa pode ler seu próprio código fonte
Todos os clones devem ser arquivos separados
Não é permitido imprimir seu programa
Os nomes dos arquivos são contados no número de bytes
Os clones não precisam estar no mesmo diretório que o arquivo de origem nem compartilhar o mesmo nome de arquivo
Pelo menos 1000 clones devem poder ser criados
Ganhando:
Menos bytes ganham!
fonte
yes `<$0`|split -1
muito melhor, mas que dobra a contagem de bytes ...Lote, 32 bytes
Não está usando
@
porque não há nenhuma restrição em STDOUT.%1
o padrão é a sequência vazia,n
tornando1
- se a primeira vez e incrementando a cada passagem. Como alternativa, isso pode funcionar para 28 bytes, mas não tenho idéia de quão aleatório%random%
é realmente quando usado assim:fonte
%random%
é baseado no horário atual e pode gerar de 0 a algo um pouco acima de 32.000.%random%
é uma variável que, quando acessada, gera um número aleatório como @ user2428118 mencionado.Bater,
25,16,12, 11 bytesEDITAR% S:
$!
como o nome do arquivo (será reutilizado a cada ~ 32k arquivos, mas agora é permitido), -4 bytesGolfe
Explicado
Aparece novamente como um trabalho em segundo plano com &, antes de fazer uma cópia, para que cada iteração seja executada sob seu próprio PID.
Usa o último PID do trabalho como o nome do arquivo.
Isso pode ser executado infinitamente (ou até parar), mas reutilizará os nomes de arquivos dos clones aprox. a cada ~ 32k iterações.
Pode ser um pouco desagradável de matar, mas o AFAIK não é contra as regras.
Experimente Online!
fonte
&
. tio.run/nexus/bash#VY5BS8NAEIXP7q943W5tq6QpelMRRCIIGg/…Ruby,
78 bytes,7743 + 4 (nome do arquivo: a.rb) = 47 bytes43 bytes + nome / Graças a @Alexis Muito mais curto !!!
isso é tão jogado quanto eu acho que vai ficar
73 bytes + nome / Agradecimentos aAlexis Anderson
74 bytes + nome
Esta é a minha primeira resposta Ruby, para que todas as melhorias sejam bem-vindas.
fonte
sh, 24 bytes
fonte
C #,
104102 bytes-2 bytes graças a berkeleybross
Não, não é o mais curto. Mas é c #. O que você esperava?
fonte
File.Copy
. Alterando para um loop for, para que você possa embutir a declaração int e remover a1>0
peça. E pré incrementar oi
naFile.Copy
declaração, que lhe dá 86 bytes, acredito:class P{static void Main(){for(int i=0;;)System.IO.File.Copy("c.cs","c"+ ++i+".cs");}}
c.cs
não estará no diretório de saída e precisará ser copiado manualmente. Como é que isso funciona?$"c{++i}.cs"
é de 2 bytes menor do que"c"+ ++i+".cs"
Processando, 55 + 5 (nome do arquivo) = 60 bytes
Não sei se o nome do arquivo conta como bytes extras
Praticamente uma série de construções todas encadeadas
Explicação
fonte
ForceLang + o módulo ForceLang-JS , 162 bytes
fonte
Python 2, 54 bytes
fonte
import sys
?Mathematica, 41 bytes
Programa completo. Cópias seu próprio em arquivo de origem
0
,1
,2
, etc. no diretório atual.fonte
PHP,
9160 bytesEconomizou 31 bytes graças ao manatwork
Usage:
$ php f.php
clonesf.php
e seu código reproduzir infinitamente-se em nomes de arquivos como1
,2
,3
... até o tempo limite.Versão anterior:
Uso:
$ php f.php
clonesf.php
e sua reprodução código infinitamente próprio gostof1.php
,f2.php
,f3.php
...f(n).php
até o tempo limite.fonte
<?for(;;)file_put_contents(++$i,file_get_contents("f.php"));
awk, 29 (21) bytes,
O awk não é realmente a ferramenta para isso, pois requer uma
close()
execução indefinida. Caso contrário, tudo o que produz são arquivos vazios.Se a contagem de clones tiver um limite, por exemplo 5:
o programa seria 21 bytes.
Cole o programa em um arquivo
a
e execute:fonte
Python, 69 bytes
Tentei usar
a
o nome do arquivo, mas (sem surpresa) o Windows não gosta de arquivos com o nomea=open(__file__).read()\ni=0\nwhile 1:i+=1;open(
i+'.py','w').write(a)
. Eu também tentei isso:No entanto, ele me dá este erro:
Ele cria 83 arquivos, mas isso não chega nem perto dos 1000 necessários.
Se você deseja remover esses arquivos, pode usar o seguinte:
fonte
RBX.Lua, 14 bytes
ISSO É MESMO UM SISTEMA DE ARQUIVOS QUE EU NÃO SEI
Clones em si. À medida que é instanciado, é executado novamente, fornecendo, portanto, recursão automática.
fonte
JavaScript ES6 34 bytes
Não tenho certeza se isso conta, mas aqui:
fonte
Python 2, 61 bytes (unix) 65 (multiplataforma)
Unix - 61 bytes
No unix cp está o sistema copy-file - command. Usar o console via popen me permite copiar o arquivo por cp. novos arquivos aparecerão no diretório de arquivos antigos.
CrossPlatform - 65 bytes
Isso funciona, pois abrir no padrão permite a leitura.
Funfact: substitua
1:i+=1
pori:i-=1
e ele irá parar em i cópias.Fora isso, não vejo como torná-lo mais curto do que o @muddyfish fez.
fonte
C, 80 bytes
Imprime-se até matá-lo. Apenas um padrão C quine com um loop infinito.
fonte