Ada beberapa tantangan yang melibatkan penggandaan kode sumber: di sini dan di sini . Tugas yang kami miliki di sini sedikit lebih sulit, tetapi harus dapat dilakukan di hampir setiap bahasa.
Dalam tantangan ini, Anda akan menerima bilangan bulat positif yang berubah-ubah. Program Anda harus menampilkan bilangan bulat itu dua kali lipat . Ketika kode sumber Anda digandakan, itu akan mengambil bilangan bulat positif, dan mengeluarkannya kuadrat .
Bagaimana kode sumber Anda digandakan? Nah, Anda bisa mendapatkannya dengan cara Anda . Artinya, Anda dapat membagi kode sumber Anda menjadi string byte atau karakter (atau token di langs tokenized) dari setiap sama panjang yang Anda inginkan , dan ulangi setiap potongan dua kali berturut-turut.
Untuk program awal ABCDEFGHIJKL
, (panjang 12) di sini adalah semua program yang mungkin digandakan:
Chunk length | Doubled source code
-------------+-------------------------
1 | AABBCCDDEEFFGGHHIIJJKKLL
2 | ABABCDCDEFEFGHGHIJIJKLKL
3 | ABCABCDEFDEFGHIGHIJKLJKL
4 | ABCDABCDEFGHEFGHIJKLIJKL
6 | ABCDEFABCDEFGHIJKLGHIJKL
12 | ABCDEFGHIJKLABCDEFGHIJKL
Perhatikan bahwa ini berarti program dengan panjang prime hanya dapat digandakan dua cara: setiap karakter digandakan, atau program penuh diulang dua kali.
Aturan:
- Kode harus merupakan program atau fungsi lengkap.
- Celah standar dilarang.
- Metode I / O standar diizinkan.
- Semua karakter / byte, termasuk spasi dan baris baru, dihitung dalam panjang kode dan berkontribusi pada potongan.
- Anda dapat mengasumsikan bahwa input dan kuadratnya dapat diwakili oleh tipe int / integer bahasa Anda.
- Anda tidak boleh menganggap baris baru atau karakter lain tertinggal.
- Berikan ukuran chunk Anda di pos setelah hitungan byte.
- Ini kode-golf , jadi program yang lebih pendek lebih baik! Jika dua program memiliki panjang yang sama, yang menggunakan panjang chunk yang lebih kecil akan menang. (Jika Anda memiliki program yang lebih panjang yang menggunakan panjang chunk yang lebih kecil, itu juga layak diposkan!)
- Jika program Anda membutuhkan input / jalur kedua, Anda tidak boleh membuat asumsi tentang nilainya. Secara khusus, program Anda harus bekerja jika input kedua kosong, sama dengan yang pertama, atau integer yang berbeda. Jika program Anda tidak membutuhkan input / saluran kedua, Anda dapat mengabaikan pembatasan ini.
5 -> 10
; kode ganda: 5 -> 25 25
.
.0
di akhir)?