Debe crear un programa que cree clones exactos de sí mismo infinitamente hasta que se detenga. Lo que esté en el programa original debe estar en los clones. En otras palabras, los clones y el programa original son iguales en todos los sentidos, excepto que los clones no tienen que estar en el mismo tipo de archivo que el código fuente (pueden ser archivos de texto).
Ejemplo:
Si mi programa original es:
for i in range(0, 10):
print i
el clon también debe ser:
for i in range(0, 10):
print i
Reglas y aclaraciones:
Las lagunas estándar están prohibidas
Los clones deben ser la copia exacta del original.
Los clones deben ser archivos legibles que se puedan ejecutar si se colocan dentro del intérprete correcto
El programa puede leer su propio código fuente.
Todos los clones deben ser archivos separados.
No está permitido imprimir su programa
Los nombres de archivo cuentan en la cantidad de bytes
Los clones no tienen que estar en el mismo directorio que el archivo fuente ni compartir el mismo nombre de archivo
Se deben poder crear al menos 1000 clones.
Victorioso:
¡Menos bytes gana!
fuente
yes `<$0`|split -1
mucho más, pero eso duplica el recuento de bytes ...Lote, 32 bytes
No se usa
@
porque no hay restricciones en STDOUT.%1
el valor predeterminado es la cadena vacía, por lo que sen
convierte en1
la primera vez y se incrementa en cada pasada. Alternativamente, esto podría funcionar para 28 bytes, pero no tengo idea de cuán aleatorio%random%
es realmente cuando se usa así:fuente
%random%
se basa en el tiempo actual y puede generar desde 0 hasta algo ligeramente superior a 32,000.%random%
es una variable que, cuando se accede, produce un número aleatorio como @ user2428118 mencionado.Golpetazo,
25,dieciséis,12, 11 bytesEDICIONES:
$!
como nombre de archivo (se reutilizará cada ~ 32k archivos, pero ahora está permitido), -4 bytesGolfed
Explicado
Vuelve a aparecer como un trabajo de fondo con &, antes de hacer una copia, por lo que cada iteración se ejecutará bajo su propio PID.
Utiliza el último PID del trabajo como nombre de archivo.
Esto puede ejecutarse infinitamente (o hasta que se detenga) pero reutilizará los nombres de archivos clonados aprox. cada ~ 32k iteraciones.
Podría ser un poco desagradable matar, pero AFAIK no está en contra de las reglas.
¡Pruébelo en línea!
fuente
&
. tio.run/nexus/bash#VY5BS8NAEIXP7q943W5tq6QpelMRRCIIGg/…Ruby,
78 bytes,7743 + 4 (nombre de archivo: a.rb) = 47 bytes43 bytes + nombre / Gracias a @Alexis ¡Mucho más corto!
eso es tan golfizado como creo que va a ser
73 bytes + nombre / Gracias a @Alexis Anderson
74 bytes + nombre
Esta es mi primera respuesta de Ruby, por lo que todas las mejoras son bienvenidas.
fuente
sh, 24 bytes
fuente
C #,
104102 bytes-2 bytes gracias a berkeleybross
No, no es el más corto. Pero es C #. ¿Que esperabas?
fuente
File.Copy
. Cambiando a un bucle for para que pueda alinear la declaración int y eliminar la1>0
parte. Y pre incremente eli
en laFile.Copy
declaración, que le da 86 bytes, creo:class P{static void Main(){for(int i=0;;)System.IO.File.Copy("c.cs","c"+ ++i+".cs");}}
c.cs
no estará en el directorio de salida y debe copiarse allí manualmente. ¿Como funciona esto?$"c{++i}.cs"
es de 2 bytes más corto que"c"+ ++i+".cs"
Procesando, 55 + 5 (nombre del archivo) = 60 bytes
No sé si el nombre de archivo cuenta como bytes adicionales
Casi una serie de builtins encadenados todos juntos
Explicación
fuente
ForceLang + el módulo ForceLang-JS , 162 bytes
fuente
Python 2, 54 bytes
fuente
import sys
?Mathematica, 41 bytes
Programa completo Copias de su propio archivo de origen en
0
,1
,2
, etc, en el directorio actual.fuente
PHP,
9160 bytesGuardado 31 bytes gracias a manatwork
Uso:
$ php f.php
clonesf.php
y su código reproducir infinitamente sí en nombres de archivo como1
,2
,3
... hasta que el tiempo de espera.Versión previa:
Uso:
$ php f.php
clonesf.php
y su reproducción código infinitamente sí mismo comof1.php
,f2.php
,f3.php
...f(n).php
hasta el tiempo de espera.fuente
<?for(;;)file_put_contents(++$i,file_get_contents("f.php"));
awk, 29 (21) bytes,
awk no es realmente la herramienta para esto, ya que requiere
close()
cuando se ejecuta de forma indefinida. De lo contrario, todo lo que produce son archivos vacíos.Si el recuento de clones tenía un límite, por ejemplo 5:
el programa tendría 21 bytes.
Pegue el programa en un archivo
a
y ejecute:fuente
Python, 69 bytes
Intenté usar
a
el nombre del archivo, pero (como era de esperar) a Windows no le gustan los archivos llamadosa=open(__file__).read()\ni=0\nwhile 1:i+=1;open(
i+'.py','w').write(a)
. También probé esto:Sin embargo, me da este error:
Crea 83 archivos, pero eso ni siquiera se acerca a los 1000 necesarios.
Si desea eliminar estos archivos, puede usar esto:
fuente
RBX.Lua, 14 bytes
ES ESTO INCLUSO UN SISTEMA DE ARCHIVO QUE NO CONOZCO
Clones en sí. A medida que se instancia, vuelve a ejecutarse, lo que proporciona una recursión automática.
fuente
JavaScript ES6 34 bytes
No estoy seguro si esto cuenta, pero aquí:
fuente
Python 2, 61 bytes (unix) 65 (multiplataforma)
Unix - 61 bytes
En unix cp está el sistema copy-file - command. Usar la consola a través de popen me permite copiar el archivo por cp. nuevos archivos aparecerán en el directorio de archivos antiguos.
CrossPlatform - 65 bytes
Esto funciona, ya que abrir por defecto permite la lectura.
Funfact: reemplazar
1:i+=1
coni:i-=1
y se detendrá en i copias.Aparte de eso, no veo forma de hacerlo más corto que @muddyfish.
fuente
C, 80 bytes
Se imprime hasta que lo matas. Solo una quine C estándar con un bucle infinito.
fuente