Ini adalah Desember 2014, dan 2015 sudah hampir dimulai. Namun, tampaknya tidak semua orang menyadari hal ini.
Tetapi orang-orang PPCG datang untuk menyelamatkan!
Memasukkan
Program Anda diberi kotak seperti yang ada di dinding, di mana hari-hari di bulan Desember terlihat berbeda dari bulan November dan Januari. Setiap minggu dimulai dengan hari Minggu dan berakhir dengan hari Sabtu.
Hari dalam bulan diwakili oleh a #
. Hari yang jatuh di luar bulan diwakili oleh (spasi, kode ASCII 32). Setiap minggu berada di jalur yang berbeda. Garis dipisahkan oleh karakter baris baru (
\n
). Program Anda mungkin memerlukan penghentian atau penyertaan baris baru di akhir input.
Misalnya, ini adalah input untuk Desember 2009:
#####
#######
#######
#######
#####
Kalender selalu dari bulan Desember.
Tugas
Diberikan input, Anda harus menemukan tahun yang terkait dengan kalender. Karena ada beberapa tahun yang cocok dengan kalender, Anda harus mengembalikan tahun (sebelum 2015) yang paling dekat dengan tahun 2015. (Tidak termasuk tahun 2015 itu sendiri.)
Program Anda harus menghasilkan output yang benar untuk setiap tahun <2015, tidak termasuk yang memiliki tata letak kalender untuk Desember yang sama dengan tahun lain (sebelum 2015) mendekati 2015.
Jika tahun ini <2014, Anda juga harus menghitung selisih tahun hingga 2014. Misalnya, untuk 2012 perbedaannya 2
.
Keluaran
Output program Anda harus:
- Teks:
Your calendar is for <year>.
(Catatan: karena ini awalnya dieja sebagai "kalender", saya akan menerima ejaan itu juga.) - Diikuti oleh baris baru (
\n
atau\r\n
). - Diikuti oleh teks:
It's almost 2015.
- Jika tahun ini <2014, ini harus diikuti oleh teks:
You're <difference> years behind.
Ini harus pada baris terpisah. - Diikuti oleh baris baru (
\n
atau\r\n
). - Diikuti oleh teks:
Go buy a new calendar!
- Opsional diikuti oleh baris baru (
\n
atau\r\n
).
Aturan
- Anda dapat memilih apakah Anda ingin menerima kalender sebagai argumen baris perintah (misalnya
yourprogram.exe <calendar>
) atau meminta input pengguna. - Anda dapat menganggap program Anda tidak akan menerima input yang tidak valid. Input yang tidak valid termasuk tata letak kalender yang tidak ada tahun.
- Kode terpendek (dalam byte, dalam bahasa apa pun) menang.
Argumen baris perintah non-standar (argumen yang biasanya tidak diperlukan untuk menjalankan skrip) dihitung terhadap jumlah total karakter.
Apa yang tidak boleh dilakukan oleh program Anda :
- Bergantung pada sumber daya eksternal apa pun.
- Bergantung pada memiliki nama file tertentu.
- Output apa pun selain output yang dibutuhkan.
- Butuh waktu yang sangat lama untuk dijalankan. Jika program Anda berjalan lebih dari satu menit pada komputer pengguna rumahan rata-rata, itu tidak valid.
- Program Anda tidak boleh ditulis dalam bahasa pemrograman yang tidak ada kompiler / juru bahasa yang tersedia untuk umum sebelum tantangan ini diposting.
Contohnya
Memasukkan:
#####
#######
#######
#######
#####
Keluaran:
Your calendar is for 2009.
It's almost 2015.
You're 5 years behind.
Go buy a new calendar!
Memasukkan:
######
#######
#######
#######
####
Keluaran:
Your calendar is for 2014.
It's almost 2015.
Go buy a new calendar!
Memasukkan:
#
#######
#######
#######
#######
##
Keluaran:
Your calendar is for 2012.
It's almost 2015.
You're 2 years behind.
Go buy a new calendar!