Mari kita langsung ke sana. Tantangan Anda adalah membuat program yang melakukan hal-hal ini tergantung pada inputnya:
Jika input adalah angka, hasilkan "Perdana" jika nomornya adalah bilangan prima dan "Tidak prima" jika nomor tersebut bukan bilangan prima. Anda dapat menganggap angkanya> 1.
Jika inputnya dua angka, hasilkan setiap nomor prima antara angka pertama (inklusif) dan angka kedua (eksklusif). Anda dapat mengasumsikan angka pertama lebih kecil dari yang kedua.
Inilah tantangan sebenarnya: jika tidak ada input, program harus menampilkan versi yang lebih pendek dari dirinya sendiri yang melakukan hal yang persis sama dengan program aslinya. Program tidak diperbolehkan membaca dari file apa pun atau dari web. Program baru juga harus dapat melakukan ini. Ini harus bekerja setidaknya untuk 5 generasi. Program baru tidak harus dalam bahasa yang sama dengan yang pertama.
Mencetak:
Skor Anda sama dengan jumlah jumlah byte dalam lima generasi pertama kiriman Anda (kiriman itu sendiri menjadi generasi satu). Jika kode baru tersebut dikodekan ke dalam program pertama, kalikan skornya dengan 1,5. Skor terendah menang. (Jika Anda menemukan beberapa jenis cacat dalam sistem penilaian, beri tahu saya di komentar)
Jawaban:
CJam, 66 + 65 + 64 + 63 + 62 = 320
325355byte5 baris berikut adalah 5 generasi pertama:
Yang terakhir menghasilkan
yang masih melakukan tugas utama dengan benar.
Uji di sini.
Penjelasan
Quine CJam dasar adalah
yang dapat diperluas dengan sangat mudah ke quine umum. Untuk penjelasan tentang ini, lihat jawaban saya di sini .
Ide dasar untuk jawaban ini adalah:
Berikut ini adalah rincian kode di dalam quine:
sumber
C, Nilai: 553 + 552 + 551 + 550 + 549 = 2755,
Panjang Asli: 553, Rata-rata: 551
EDIT: Hanya 5 generasi, bukan 6!
Sepertinya Martin mengalahkan saya baik dalam waktu maupun skor (hampir urutan besarnya!). Ah, baiklah.
Program aslinya adalah sebagai berikut:
Saya akan menguraikannya sedikit untuk pemahaman yang lebih baik, tetapi agar berfungsi dengan baik, baris-baris baru BUKAN bagian dari program.
Satu-satunya hal yang berubah dari program ke program adalah nilai
k
, yang kehilangan tepat satu digit setiap iterasi. Menariknya, setelah generasi ke-5, k menjadi nol dan tetap di sana, sehingga Anda dapat mengulangi iklan tanpa batas dan selalu memiliki hasil yang valid.sumber
Tcl 253 + 252 + 251 + 250 + 249 = 1255 byte
Kode harus diakhiri dengan baris baru. Penjelasan:
Tulis kode menjadi x, kemudian jalankan.
Jalankan perintah yang namanya panjang argumen, dengan meneruskan argumen.
Mengembalikan 1 saat a adalah bilangan prima, 0 lainnya. Menggunakan rekursi; backslash kedua mencegah penggantian perintah dari penerjemah dan memungkinkan perintah dari
expr
(yang malas).Implementasi langsung dari persyaratan.
Ini adalah quine, melucuti spasi dari awal setiap kali.
sumber