Saat itu tahun ketika banyak dari kita mendapatkan kalender kedatangan kita ! Jika Anda tidak terbiasa dengan kalender kedatangan, ini adalah kalender khusus yang digunakan untuk menghitung mundur kedatangan untuk mengantisipasi Natal. Menurut pengalamanku, pintu-pintu itu ditempatkan secara acak, dan sebagian kesenangan ketika seorang anak sedang bekerja di mana pintu besok berada! Seringkali hari-hari ini, kalender memiliki cokelat di belakang setiap pintu, tetapi alih-alih membeli kalender kedatangan tahun ini, Anda harus membuat yang ASCII!
Tugas
Diberikan masukan bilangan bulat ( n
) dalam kisaran 0
- 24
, buat kalender kedatangan ASCII dengan pintu bernomor up-to n
, dibuka. Anda harus menggunakan urutan yang sama seperti pada contoh berikut: 2
, 17
, 8
, 12
, 1
, 6
, 11
, 20
, 5
, 22
, 3
, 10
, 15
, 23
, 7
, 16
, 9
, 24
, 18
, 4
, 13
, 19
, 21
, 14
.
Pintu
Pintu yang tertutup harus:
.-----------.
| |
| |
| |
| nn |
|___________|
di mana n
mewakili nomor pintu (nol di depan adalah opsional) dan pintu yang terbuka adalah:
.-----------.
|\ |
| | |
| | |
| | |
| |_________|
\|
kecuali untuk pintu 24, yang sebaliknya:
.--------------------------.
| |
| |
| |
| 24 |
|__________________________|
.--------------------------.
|\ |
| | |
| | |
| | |
| |________________________|
\|
Pintu-pintu ini disusun dalam bingkai 37 garis dengan 79 karakter, dengan dua spasi di antara setiap kolom, dan garis kosong di antara setiap baris.
Pintu Terbuka
Ketika pintu-pintu dibuka, Anda harus memajang salah satu dari (terkait Natal yang terkait - permintaan maaf atas keterampilan seni buruk saya!) Di bawah ini di dalam pintu:
. _ . _'_ + .^o _(")_ _n_ $ .
}\O/{ ) (^.^_ /~\ (';') (_ . _) (") |,| __/ \__
}/*\{ \./v`v' /~*~\ {\|+|/} / : \ >( o )< | | `. .'
/***\ oO8 /~*~~*\ d-b (_/ \_) ( o ) ._|_|_. /.^.\
.\^/. ____ __.==,_ .*. _ _ . . . _______ _ _
<->o<-> /_%_/| --|XX|- /.\ (O X O) .i_i_i. _j_j_j_ ( `v' )
'/v\` |_|_| | _| | |_-_| / ^ \ |-~~-~| ||__| \ /
|_|_|/ (____' (.-o-.) \/ \/ |_____| _|/$$|_ V
i |~| //'`\ |=| _{/ _{/ , * \ ==== b
.'%'. | | //....\ / \ \_/ + . + \\\|+-| .'''.
|^~~.~| Y ||()()| |(%)| /O \ . ' . \\\\\+| {*=*=*}
_'._.'_ _|_ ||_[]_| |___| @__,/\\ ~~~~~~~ \\\\\\\ '._.'
_ | _ | .W. .W. .&%$+*. \O/ .;' ..,.;.. ('v')
.'.'O | ($) | |*| |*| */'"'\& [ ]|_. .m_. |\\|//| // \\
/___\ | " o| |*| |*| $\._./% |_____) C| | \\|// |\ /|
(_____) | === | 'M' 'M' '%&*+$' ------' |__| _=|=_ Y Y
\ / .==. .-. -._.- __/\__ ... .-.
._o_O_. .--' | \| |/ .+. \_\/_/ '* ` //`);
|/\/\/| \_____/ /| |\ ( W ) /_/\_\ |_/\*_| %%
""""""" `=====' '-' `"` \/ [_____] //
Setiap gambar memiliki 7 karakter dan mencakup 4 baris sehingga sesuai dengan jendela. Anda bebas memilih gambar di atas dan menggunakannya dalam urutan apa pun, tetapi Anda tidak boleh mengulangi gambar. Untuk tanggal 24, Anda juga harus menambahkan pesan:
~
~ MERRY ~
~ CHRISTMAS! ~
~~~~~
yang sesuai dengan salah satu gambar di atas, Anda dapat memilih apakah teks di sebelah kanan atau kiri gambar.
Contohnya
Input yang diberikan 0
, output kalender tanpa pintu terbuka:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 2 | | 17 | | 8 | | 12 | | 1 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 6 | | 11 | | 20 | | 5 | | 22 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 3 | | 10 | | 15 | | 23 | | 7 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 16 | | 9 | | 24 | | 18 | |
| |___________| |___________| |__________________________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 4 | | 13 | | 19 | | 21 | | 14 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
|_____________________________________________________________________________|
Untuk input 5
, hasilkan sesuatu yang mirip dengan:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | | | | | | | |\ __.==,_ | |
| | | }\O/{ | | | | | | | | | --|XX|- | |
| | | }/*\{ | | | | | | | | | _| | | |
| | | /***\ | | 17 | | 8 | | 12 | | | (____' | |
| | |_________| |___________| |___________| |___________| | |_________| |
| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | |\ _{/ _{/ | | | |
| | | | | | | | | \_/ | | | |
| | | | | | | | | /O \ | | | |
| | 6 | | 11 | | 20 | | | @__,/\\ | | 22 | |
| |___________| |___________| |___________| | |_________| |___________| |
| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _n_ | | | | | | | | | |
| | | (") | | | | | | | | | |
| | | >( o )< | | | | | | | | | |
| | | ( o ) | | 10 | | 15 | | 23 | | 7 | |
| | |_________| |___________| |___________| |___________| |___________| |
| \| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 16 | | 9 | | 24 | | 18 | |
| |___________| |___________| |__________________________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ + | | | | | | | | | |
| | | /~\ | | | | | | | | | |
| | | /~*~\ | | | | | | | | | |
| | | /~*~~*\ | | 13 | | 19 | | 21 | | 14 | |
| | |_________| |___________| |___________| |___________| |___________| |
| \| |
|_____________________________________________________________________________|
Untuk input 14
:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | | | |\ . | |\ ____ | |\ __.==,_ | |
| | | }\O/{ | | | | | __/ \__ | | | /_%_/| | | | --|XX|- | |
| | | }/*\{ | | | | | `. .' | | | |_|_| | | | | _| | | |
| | | /***\ | | 17 | | | /.^.\ | | | |_|_|/ | | | (____' | |
| | |_________| |___________| | |_________| | |_________| | |_________| |
| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _ | |\ $ | | | |\ _{/ _{/ | | | |
| | | .'.'O | | | |,| | | | | | \_/ | | | |
| | | /___\ | | | | | | | | | | /O \ | | | |
| | | (_____) | | | ._|_|_. | | 20 | | | @__,/\\ | | 22 | |
| | |_________| | |_________| |___________| | |_________| |___________| |
| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _n_ | |\ _(")_ | | | | | |\ |=| | |
| | | (") | | | (_ . _) | | | | | | | / \ | |
| | | >( o )< | | | / : \ | | | | | | | |(%)| | |
| | | ( o ) | | | (_/ \_) | | 15 | | 23 | | | |___| | |
| | |_________| | |_________| |___________| |___________| | |_________| |
| \| \| \| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | |\ \ ==== | | | | | |
| | | | | \\\|--| | | | | | |
| | | | | \\\\\-| | | | | | |
| | 16 | | | \\\\\\\ | | 24 | | 18 | |
| |___________| | |_________| |__________________________| |___________| |
| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ + | |\ , * | | | | | |\ i | |
| | | /~\ | | | + . + | | | | | | | .'%'. | |
| | | /~*~\ | | | . ' . | | | | | | | |^~~.~| | |
| | | /~*~~*\ | | | ~~~~~~~ | | 19 | | 21 | | | _'._.'_ | |
| | |_________| | |_________| |___________| |___________| | |_________| |
| \| \| \| |
|_____________________________________________________________________________|
Untuk input 24
:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | |\ //''\ | |\ . | |\ ____ | |\ __.==,_ | |
| | | }\O/{ | | | //....\ | | | __/ \__ | | | /_%_/| | | | --|XX|- | |
| | | }/*\{ | | | ||()()| | | | `. .' | | | |_|_| | | | | _| | | |
| | | /***\ | | | ||_[]_| | | | /.^.\ | | | |_|_|/ | | | (____' | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _ | |\ $ | |\ |~| | |\ _{/ _{/ | |\ . . . | |
| | | .'.'O | | | |,| | | | | | | | | \_/ | | | .i_i_i. | |
| | | /___\ | | | | | | | | Y | | | /O \ | | | |-~~-~| | |
| | | (_____) | | | ._|_|_. | | | _|_ | | | @__,/\\ | | | |_____| | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _n_ | |\ _(")_ | |\ | _ | | |\ .W. .W. | |\ |=| | |
| | | (") | | | (_ . _) | | | | ($) | | | | |*| |*| | | | / \ | |
| | | >( o )< | | | / : \ | | | | " o| | | | |*| |*| | | | |(%)| | |
| | | ( o ) | | | (_/ \_) | | | | === | | | | 'M' 'M' | | | |___| | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
| .-----------. .-----------. .-------------------------- .-----------. |
| |\ _ _ | |\ \ ==== | |\ .&%$+*. ~ | |\ \O/ | |
| | | (O X O) | | | \\\|--| | | | */'"'\& ~ MERRY ~ | | | [ ]|_. | |
| | | / ^ \ | | | \\\\\-| | | | $\._./% ~ CHRISTMAS! ~ | | | |_____) | |
| | | \/ \/ | | | \\\\\\\ | | | '%&*+$' ~~~~~ | | | ------' | |
| | |_________| | |_________| | |________________________| | |_________| |
| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ + | |\ , * | |\ | | |\ .*. | |\ i | |
| | | /~\ | | | + . + | | | .'''. | | | /.\ | | | .'%'. | |
| | | /~*~\ | | | . ' . | | | {*=*=*} | | | |_-_| | | | |^~~.~| | |
| | | /~*~~*\ | | | ~~~~~~~ | | | '._.' | | | (.-o-.) | | | _'._.'_ | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
|_____________________________________________________________________________|
Aturan
Ini adalah kode-golf sehingga kode terpendek dalam byte, dalam setiap bahasa, menang.
- Setiap format yang masuk akal dapat digunakan untuk I / O dengan asumsi itu konsisten.
- Jumlah spasi putih sebelum dan sesudah kalender baik-baik saja, serta ruang tambahan / tidak dicetak di akhir setiap baris, tetapi tidak ada sebelum setiap baris karena ini harus masuk ke dalam 80 karakter.
- Semua celah standar dilarang.
Terima kasih
James Holderness atas kontribusi gambar ASCII!
Jawaban:
Charcoal ,
676 639 614 607 598 590 564561 byteCobalah online!
Di sini Anda memiliki versi kode yang verbose , cukup dapat dimengerti. Pendekatan saya adalah kebalikan dari @ Neil. Dia mengambil semua hadiah dan kemudian menutupi yang tidak diperlukan. Saya hanya menggambar hadiah yang dibutuhkan.
sumber
Print(Map(Map(4,Add(Times(Modulo(i,8),7),Times(56,Add(k,Times(4,IntDivide(i,8)))))),Slice("
...",k,Add(k,7))));
bukanfor (4)
loop.l
opsi Charcoal ...Arang , 666 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Tidak benar-benar bermain golf, tapi saya tidak yakin saya ingin ...
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Ini adalah versi yang menarik hadiah secara terpisah untuk
577541530 byte setelah saya mencuri beberapa ide dari @Charlie untuk bermain golf beberapa byte lagi.sumber
Python 2 ,
132213191287126510611059105610321030 byteCobalah online!
-4 byte terima kasih kepada Mr.Xcoder
-24 byte terima kasih kepada Lynn
Versi terkompresi (terima kasih kepada Lynn dan ovs):
Python 2 ,
102110171013 byteCobalah online!
sumber
Befunge,
122011981186 byteCobalah online!
Masih dimungkinkan untuk melakukan golf ini lebih lanjut dengan mengompresi gambar, tetapi itu kemungkinan akan membutuhkan penggunaan karakter ASCII yang diperluas yang saat ini tidak didukung di TIO.
sumber
Python 3 + numpy,
1164115911231103109710651061996994 byteKompres semua hal dan gunakan numpy untuk mengikatnya bersama.
Pertama bangun pintu tertutup, lalu ganti pintu yang perlu dibuka. Akhirnya, hasilkan semuanya.
-22 byte terima kasih kepada Tn . Xcoder .
-5 byte berkat notjagan .
EDIT: <1000 byte!
Cobalah online!
sumber
C (gcc) ,
12961291121111661164 byteNamun, string super panjang itu (59% dari semuanya!). Ada emas di bukit-bukit itu; Saya bisa merasakannya.
Sunting: Jika ada emas, saya hanya menemukan bintik sejauh ini.
Sunting: -2 bytes berkat ceilingcat
Cobalah online!
Versi non-ASCII
-30 bytes berkat ceilingcat .
GCC pada mesin saya menghasilkan sesuatu yang langsung crash, sehingga tidak mungkin saya akan mengejar garpu ini. (Belum lagi bahwa TiO memperhitungkan 1120 byte untuk beberapa alasan (sama dengan jumlah karakter yang dilaporkan).).
Tautan ideone
sumber
C (gcc) ,
279819761963...186217421703165116341632 byte-2 Bytes berkat ceilingcat
Saya telah mengganti beberapa ikon untuk menghindari karakter '\' ESC yang tidak perlu.
Cobalah online!
sumber
Ruby , 966 byte
Cobalah online!
Lebih banyak bermain golf, tetapi lebih sulit untuk melihat gambar dalam kode.
Ruby , 974 byte
Ini adalah fungsi, untuk ditugaskan ke variabel seperti
f
dan disebutf[n]
. Mencetak ke stdout.Ternyata lebih lama dari yang diharapkan. Saya pikir ada beberapa byte lagi untuk diperas dengan meletakkan data gambar secara berbeda, yang akan saya coba nanti.
Saya menggunakan gambar simetris atau dekat simetris, dan hanya setengah tangan kanan ditemukan dalam kode. Setengah bagian kiri mungkin memiliki subsitusi hingga 5 karakter dibandingkan dengan yang kanan. Kode untuk membuat pergantian cukup lama, yang sebagian meniadakan kompresi. Hanya sekitar 60 byte yang disimpan.
Cobalah online!
sumber
Clojure , 1530
Cobalah
Solusi clojure mungkin bisa sedikit lebih pendek, tapi inilah upaya pertama saya.
sumber