Dalam tantangan ini Anda akan membangun sebuah program yang tumbuh saat melintasi sepanjang zaman ... Sampai 2017.
Tantangan
Setiap kali deskripsi tantangan ini mengatakan "program", Anda juga dapat membaca "fungsi".
Kiriman Anda, ketika dieksekusi, akan menampilkan program yang THE LENGTH OF YOUR SUBMISSION
+1
panjangnya byte.
Ketika bahwa program yang dijalankan, itu akan menampilkan program yang THE LENGTH OF YOUR SUBMISSION
+ 2
byte panjang ... dan seterusnya.
Namun , ketika program Anda telah mencapai panjang 2017 byte, alih-alih harus 2017
keluar dan keluar.
Aturan
- Output dari program akhir harus
2017
dan hanya2017
. Ini bisa berupa string atau integer, tetapi harus membaca2017
dan bukan2017.0
atau0x7E1
omong kosong semacam itu. - Tidak ada celah standar .
- Hanya program awal Anda yang diizinkan untuk meminta input, yang akan ditambahkan ke bytecount Anda.
Jadi, jika program awal Anda panjangnya 324 karakter dan membutuhkan input 13 byte, total skor Anda akan menjadi 324 + 13 = 337 dan program yang dihasilkan olehnya harus 338 sepanjang byte.- Namun, menggunakan flag baris perintah (mis.
perl -X
) - asalkan program awal Anda dan semua program yang dihasilkan menggunakan flag yang sama . Juga, mereka juga menghitung total bytecount. Tanda hubung, garis miring, dll. Di depan flag baris perintah tidak dihitung terhadap total, jadi mis.perl -X
Dihitung sebagai satu byte tambahan.
- Namun, menggunakan flag baris perintah (mis.
- Jika Anda mengembalikan suatu fungsi, itu harus merupakan fungsi aktual dan bukan string yang, ketika dievaluasi, menghasilkan fungsi.
- Quine yang tidak benar (jika program Anda adalah quine) tidak diizinkan.
Contoh
Pseudocode, 99 byte
IF (PROGRAM LENGTH == 2017) PRINT 2017 ELSE PRINT (THE SOURCE OF THIS PROGRAM + 1 BYTE PADDING)
Kiriman Anda dapat bekerja secara berbeda, asalkan sesuai dengan aturan di atas.
;;;
diizinkan?Jawaban:
*> <> ,
292830 byteCoba di sini! (* coba dengan 2017 byte )
* atur penundaan ke 0ms atau Anda mungkin harus menunggu lama
Ini menambahkan tambahan
setiap menjalankan subsquent. Jika memiliki 2017 byte dan dijalankan, itu akan menampilkan 2017 dan menghentikan eksekusi tanpa output lainnya.
Pembaruan: Disimpan 1 byte dengan memeriksa apakah panjangnya kurang dari 2017 bukannya sama
Pembaruan 2: Memperbaiki output untuk +2 byte
Penjelasan
sumber
when your program has reached a length of 2017 bytes
, tidak tahun 2016Python 2.7, 90 byte
Berikut ini yang relatif sederhana:
Coba iterasi pertama di sini! Coba iterasi kedua dari belakang di sini! Coba iterasi terakhir di sini!
Tidak Terkumpul:
sumber
p='';...
dan1929else
, tetapi perhatikan bahwa pencetakan juga mencetak baris baru di bagian akhir, jadi Anda harus menambahkan baris baru ke program Anda, jika tidak maka akan bertambah dua byte setelah dijalankan pertama kali.Microscript II, 38 byte
sumber
> <> , 34 byte
Cobalah online! Perhatikan bahwa, untuk menguji ini untuk nilai yang lebih kecil, nilai Anda (minus 1) harus dapat dihasilkan dalam 7 byte.
Penjelasan
sumber
Java, 251 Bytes (Eclipse IDE)
Ini dengan asumsi proyek dibuat di Eclipse, menggunakan konvensi
.java
file di SRC dari dir yang berfungsi. Ada cara lain untuk mendeteksi di mana sumbernya, tetapi saya juga tidak berpikir ini melanggar aturan.Pada dasarnya buka .java source-code, dan tambahkan As hingga 2017 (setelah komentar). Ketika ukuran file sumber mencapai total 2017 byte, ia akan mencetak 2017.
sumber
C, 197 Bytes
sumber
Python 2,
21716778 bytePerhatikan bahwa harus ada baris tambahan. Saya menggunakan konsep yang mirip dengan apa yang digunakan Calconym, jadi terima kasih atas ilhamnya!
Cobalah online
Coba di 2016 ; Coba pada 2017
Versi sebelumnya:
Program ini menggunakan
inspect
modul untuk mendapatkan nomor baris saat ini. Kemudian, ia mencetak dirinya sendiri tetapi dengan garis tambahan setelah impor, yang mengubah nomor baris untuk program berikutnya. Seharusnya juga ada baris baru yang tertinggal di sini.Cobalah online
sumber
CJam ,
393330 bytedengan input
Cobalah online!
Ini secara fungsional setara dengan versi saya sebelumnya, kecuali bahwa itu menghindari kebutuhan untuk menulis dan melarikan diri dari tanda kutip. Versi sebelumnya:
Output yang mana
output yang mana
dan seterusnya. Akhirnya, programnya
Keluaran
2017
.Bagaimana itu bekerja
Tetapi apa yang sebenarnya dilakukan oleh kode dalam input?
Jika angka pertama program tidak sama dengan 2017, maka itu akan menampilkan program di mana angka itu bertambah satu kali lebih banyak daripada saat ini. Jika itu sama dengan 2017 (yaitu sudah meningkat 1984 kali), maka cukup tekan 2017 dan hentikan. Angka pertama dimulai sebagai 33 (panjang kode); setiap kenaikan akan menambah panjang kode sebesar 1 DAN angka itu menjadi 1, jadi ketika 33 telah bertambah cukup menjadi 2017, kode juga akan menjadi 2017 byte panjang.
sumber
JavaScript,
9883 byteItu adalah tantangan yang cukup ... Tebak itulah yang saya dapatkan karena membutuhkan fungsi aktual untuk dikembalikan dan bukan hanya sumber fungsi.
Fungsi asli
Saya menggunakan
function
alih-alih di=>
sini karena yang terakhir tidak mendukung fungsi bernama, hanya menetapkan fungsi anonim ke variabel.Iterasi pertama
Menjalankan hal di atas di konsol browser Anda mengembalikan fungsi yang, ketika dilemparkan ke string, terlihat seperti:
Menuju 2017
Karena setiap fungsi mengembalikan fungsi baru, Anda dapat memanggil fungsi asli / hasilnya 1934 kali untuk mendapatkan 2017 .
Diuji dengan Firefox.
sumber