Anda harus membuat program yang membuat klon tepat dari dirinya sendiri hingga tak terhingga. Apa pun yang ada di program asli harus ada di klon. Dengan kata lain, klon dan program asli sama dalam segala hal kecuali untuk itu klon tidak harus berada dalam jenis file yang sama dengan kode sumber (mereka bisa berupa file teks).
Contoh:
Jika program asli saya adalah:
for i in range(0, 10):
print i
klon juga harus:
for i in range(0, 10):
print i
Aturan dan Klarifikasi:
Celah standar dilarang
Klon harus salinan yang tepat dari aslinya
Klon harus berupa file yang dapat dibaca yang dapat dijalankan jika diletakkan di dalam interpreter yang benar
Program dapat membaca kode sumbernya sendiri
Semua klon harus berupa file terpisah
Mencetak program Anda tidak diizinkan
Nama file dihitung dalam jumlah byte
Klon tidak harus berada di direktori yang sama dengan file sumber atau berbagi nama file yang sama
Setidaknya 1000 klon harus dapat dibuat
Kemenangan:
Bytes terkecil menang!
sumber
yes `<$0`|split -1
jauh lebih baik, tetapi itu menggandakan jumlah byte ...Batch, 32 byte
Tidak menggunakan
@
karena tidak ada batasan pada STDOUT.%1
default ke string kosong, jadin
menjadi1
yang pertama kali dan peningkatan pada setiap pass. Atau, ini mungkin bekerja selama 28 byte, tetapi saya tidak tahu seberapa acak%random%
sebenarnya ketika digunakan seperti ini:sumber
%random%
didasarkan dari waktu saat ini dan dapat menghasilkan apa pun dari 0 hingga sesuatu yang sedikit di atas 32.000.%random%
adalah variabel yang, ketika diakses, menghasilkan angka acak seperti yang disebutkan @ user2428118.Pesta,
25,16,12, 11 byteEDIT:
$!
sebagai nama file (akan digunakan kembali setiap ~ 32k file, tetapi sekarang diizinkan), -4 byteGolf
Dijelaskan
Memunculkan kembali dirinya sebagai pekerjaan latar belakang dengan &, sebelum melakukan salinan, sehingga setiap iterasi akan berjalan di bawah PID sendiri.
Menggunakan PID pekerjaan terakhir sebagai nama file.
Ini dapat berjalan tanpa batas (atau sampai dihentikan) tetapi akan menggunakan kembali nama file klon kira-kira. setiap ~ 32k iterasi.
Bisa jadi agak jahat untuk membunuh, tetapi AFAIK tidak melanggar aturan.
Cobalah secara Online!
sumber
&
. tio.run/nexus/bash#VY5BS8NAEIXP7q943W5tq6QpelMRRCIIGg/...Ruby,
78 byte,7743 + 4 (nama file: a.rb) = 47 byte43 byte + nama / Terima kasih kepada @Alexis Jauh lebih pendek !!!
itu tentang golf seperti yang saya pikir akan dapatkan
73 byte + nama / Terima kasih kepada @Alexis Anderson
74 byte + nama
Ini adalah jawaban Ruby pertama saya, jadi semua perbaikan masih dalam proses.
sumber
sh, 24 byte
sumber
C #,
104102 byte-2 byte berkat berkeleybross
Tidak, ini bukan yang terpendek. Tapi itu C #. Apa yang kamu harapkan?
sumber
File.Copy
. Mengubah ke loop untuk sehingga Anda bisa inline deklarasi int dan menghapus1>0
bagian. Dan pra kenaikani
dalamFile.Copy
pernyataan itu, yang memberi Anda 86 byte saya percaya:class P{static void Main(){for(int i=0;;)System.IO.File.Copy("c.cs","c"+ ++i+".cs");}}
c.cs
tidak akan ada di direktori output dan harus disalin secara manual. Bagaimana cara kerjanya?$"c{++i}.cs"
2 byte lebih pendek dari"c"+ ++i+".cs"
Memproses, 55 + 5 (nama file) = 60 byte
Saya tidak tahu apakah nama file dianggap sebagai byte tambahan
Cukup banyak serangkaian builtin semua dirantai bersama
Penjelasan
sumber
ForceLang + modul ForceLang-JS , 162 byte
sumber
Python 2, 54 byte
sumber
import sys
?Mathematica, 41 byte
Program lengkap. Salinan sendiri file sumber ke dalam nya
0
,1
,2
, dll di direktori saat ini.sumber
PHP,
9160 byteDisimpan 31 byte berkat manatwork
Penggunaan:
$ php f.php
klonf.php
dan kode mereproduksi jauh itu sendiri dalam nama file seperti1
,2
,3
... sampai batas waktu.Versi sebelumnya:
Penggunaan:
$ php f.php
klonf.php
dan kode bereproduksi yang jauh itu sendiri sepertif1.php
,f2.php
,f3.php
...f(n).php
sampai batas waktu.sumber
<?for(;;)file_put_contents(++$i,file_get_contents("f.php"));
awk, 29 (21) byte,
awk sebenarnya bukan alat untuk ini karena membutuhkan
close()
saat berjalan tanpa batas. Kalau tidak semua yang dihasilkannya adalah file kosong.Jika jumlah klon memiliki batas, misalnya 5:
program ini akan menjadi 21 byte.
Tempel program ke file
a
dan jalankan:sumber
Python, 69 byte
Saya mencoba menggunakan
a
untuk nama file, tetapi (tidak mengherankan) Windows tidak suka file bernamaa=open(__file__).read()\ni=0\nwhile 1:i+=1;open(
i+'.py','w').write(a)
. Saya juga mencoba ini:Namun itu memberi saya kesalahan ini:
Ini menciptakan 83 file, tetapi itu bahkan tidak dekat dengan 1000 yang dibutuhkan.
Jika Anda ingin menghapus file-file ini, Anda dapat menggunakan ini:
sumber
RBX.Lua, 14 byte
INI BAHKAN A FILESYSTEM Saya TIDAK TAHU
Klon itu sendiri. Ketika hal itu diberlakukan, dalam menjalankan lagi, karena itu memberikan rekursi otomatis.
sumber
JavaScript ES6 34 byte
Tidak yakin apakah ini diperhitungkan, tetapi di sini:
sumber
Python 2, 61 byte (unix) 65 (lintas-platform)
Unix - 61 byte
Pada unix cp adalah sistem copy-file - command. Menggunakan konsol via popen memungkinkan saya untuk menyalin file dengan cp. file baru akan muncul di direktori file lama.
CrossPlatform - 65 byte
Ini berfungsi, karena terbuka pada pengaturan standar memungkinkan membaca.
Funfact: ganti
1:i+=1
dengani:i-=1
dan itu akan berhenti di i copy.Selain itu, saya tidak melihat cara membuatnya lebih pendek dari @muddyfish yang melakukannya.
sumber
C, 80 byte
Mencetak dirinya sendiri sampai Anda membunuhnya. Hanya standar C quine dengan infinite loop.
sumber