Vous devez créer un programme qui crée des clones exacts de lui-même à l'infini jusqu'à l'arrêt. Tout ce qui se trouve dans le programme d'origine doit être dans les clones. En d'autres termes, les clones et le programme d'origine sont les mêmes à tous égards, sauf que les clones ne doivent pas nécessairement être dans le même type de fichier que le code source (ils peuvent être des fichiers texte).
Exemple:
Si mon programme d'origine est:
for i in range(0, 10):
print i
le clone doit également être:
for i in range(0, 10):
print i
Règles et clarifications:
Les failles standard sont interdites
Les clones doivent être la copie exacte de l'original
Les clones doivent être des fichiers lisibles qui peuvent être exécutés s'ils sont placés dans le bon interpréteur
Le programme peut lire son propre code source
Tous les clones doivent être des fichiers séparés
L'impression de votre programme n'est pas autorisée
Les noms de fichiers comptent dans le nombre d'octets
Les clones ne doivent pas nécessairement se trouver dans le même répertoire que le fichier source ni partager le même nom de fichier
Au moins 1 000 clones devraient pouvoir être créés
Gagnant:
Le moins d'octets gagne!
la source
yes `<$0`|split -1
beaucoup mieux, mais cela double le nombre d'octets ...Lot, 32 octets
Ne pas utiliser
@
car il n'y a aucune restriction sur STDOUT.%1
par défaut à la chaîne vide,n
devient donc1
la première fois et incrémente à chaque passage. Alternativement, cela pourrait fonctionner pour 28 octets, mais je n'ai aucune idée du caractère aléatoire%random%
réel lorsqu'il est utilisé comme ceci:la source
%random%
est basé sur l'heure actuelle et peut générer n'importe quoi de 0 à quelque chose d'un peu plus de 32 000.%random%
s'agit d'une variable qui, lorsqu'elle est consultée, donne un nombre aléatoire comme @ user2428118 l'a mentionné.Frapper,
25,16,12, 11 octetsMODIFICATIONS:
$!
comme nom de fichier (sera réutilisé tous les ~ 32k fichiers, mais cela est désormais autorisé), -4 octetsGolfé
Expliqué
Se reproduit comme un travail d'arrière-plan avec &, avant de faire une copie, de sorte que chaque itération s'exécute sous son propre PID.
Utilise le dernier travail PID comme nom de fichier.
Cela peut s'exécuter à l'infini (ou jusqu'à ce qu'il soit arrêté) mais réutilisera les noms de fichiers des clones environ. toutes les ~ 32k itérations.
Cela pourrait être un peu méchant à tuer, mais l'AFAIK n'est pas contre les règles.
Essayez-le en ligne!
la source
&
. tio.run/nexus/bash#VY5BS8NAEIXP7q943W5tq6QpelMRRCIIGg/…Ruby,
78 octets,7743 + 4 (nom de fichier: a.rb) = 47 octets43 octets + nom / Merci à @Alexis Beaucoup plus court !!!
c'est à peu près aussi golfé que je pense que ça va devenir
73 octets + nom / Merci à @Alexis Anderson
74 octets + nom
Ceci est ma première réponse Ruby, donc toutes les améliorations sont les bienvenues.
la source
sh, 24 octets
la source
C #,
104102 octets-2 octets grâce à berkeleybross
Non, ce n'est pas le plus court. Mais c'est C #. Qu'est-ce que vous attendiez?
la source
File.Copy
. Passer à une boucle for pour pouvoir aligner la déclaration int et supprimer la1>0
partie. Et pré incrémentez lei
dans laFile.Copy
déclaration, cela vous donne 86 octets je crois:class P{static void Main(){for(int i=0;;)System.IO.File.Copy("c.cs","c"+ ++i+".cs");}}
c.cs
ne sera pas dans le répertoire de sortie et doit y être copié manuellement. Comment cela marche-t-il?$"c{++i}.cs"
est 2 octets plus courte que"c"+ ++i+".cs"
Traitement, 55 + 5 (nom du fichier) = 60 octets
Je ne sais pas si le nom de fichier compte comme octets supplémentaires
À peu près une série de structures toutes enchaînées
Explication
la source
ForceLang + le module ForceLang-JS , 162 octets
la source
Python 2, 54 octets
la source
import sys
?Mathematica, 41 octets
Programme complet. Des copies dans son propre fichier source
0
,1
,2
, etc. dans le répertoire courant.la source
PHP,
9160 octetsÉconomie de 31 octets grâce à la gestion
Utilisation:
$ php f.php
clonesf.php
et son code reproduisant lui - même dans l' infini des noms comme1
,2
,3
... jusqu'à ce délai d' attente.La version précédente:
Utilisation:
$ php f.php
clonesf.php
et sa reproduction de code lui - même comme infinimentf1.php
,f2.php
,f3.php
...f(n).php
jusqu'à ce délai d' attente.la source
<?for(;;)file_put_contents(++$i,file_get_contents("f.php"));
awk, 29 (21) octets,
awk n'est pas vraiment l'outil pour cela car il nécessite une
close()
exécution indéfinie. Sinon, il ne produit que des fichiers vides.Si le nombre de clones avait une limite, par exemple 5:
le programme serait de 21 octets.
Collez le programme dans un fichier
a
et exécutez:la source
Python, 69 octets
J'ai essayé d'utiliser
a
le nom de fichier, mais (sans surprise) Windows n'aime pas les fichiers nommésa=open(__file__).read()\ni=0\nwhile 1:i+=1;open(
i+'.py','w').write(a)
. J'ai également essayé ceci:Cependant cela me donne cette erreur:
Il crée 83 fichiers, mais ce n'est même pas proche des 1000 nécessaires.
Si vous souhaitez supprimer ces fichiers, vous pouvez utiliser ceci:
la source
RBX.Lua, 14 octets
EST-CE MÊME UN SYSTÈME DE FICHIERS QUE JE NE SAIS PAS
Se clone. Au fur et à mesure qu'il s'instancie, il s'exécute à nouveau, offrant ainsi une récursivité automatique.
la source
JavaScript ES6 34 octets
Je ne sais pas si cela compte, mais ici:
la source
Python 2, 61 octets (unix) 65 (multiplateforme)
Unix - 61 octets
Sur unix cp se trouve la commande copy-file - du système. L'utilisation de la console via popen me permet de copier le fichier par cp. les nouveaux fichiers apparaîtront dans le répertoire des anciens fichiers.
CrossPlatform - 65 octets
Cela fonctionne, car ouvert par défaut permet la lecture.
Funfact: remplacez
1:i+=1
pari:i-=1
et il s'arrêtera à i copies.En dehors de cela, je ne vois aucun moyen de le raccourcir par rapport à @muddyfish.
la source
C, 80 octets
S'imprime jusqu'à ce que vous le tuiez. Juste un quine C standard avec une boucle infinie.
la source