Halloween hampir tiba, hari libur setelah kebanyakan orang perlu menyapih diri dari diet gula yang berlubang.
Tulis program yang menggunakan bilangan bulat positif. Jika bilangan bulat kurang dari 31 (1 hingga 30), keluarkan lentera jack-o'-art ASCII ini, dengan melihat ke kanan seolah menantikan Halloween:
_____I_____
| | | | | | |
| | |^| |^| |
| | | |^| | |
| | |VvVvV| |
|_|_|_|_|_|_|
Jika input adalah 31 (tanggal Oktober Halloween pada), output yang sama ASCII-o'-lantern, tapi melihat kiri:
_____I_____
| | | | | | |
| |^| |^| | |
| | |^| | | |
| |VvVvV| | |
|_|_|_|_|_|_|
Jika inputnya lebih besar dari 31, keluarkan lentera ASCII yang tampak membengkak yang mungkin makan terlalu banyak permen. Ia dapat menghadap ke kiri atau ke kanan karena mual dapat membingungkan. Jadi output:
_____I_____
| | | | | | |
| |o| |o| | |
| | |^| | | |
| |XXXXX| | |
|_|_|_|_|_|_|
atau
_____I_____
| | | | | | |
| | |o| |o| |
| | | |^| | |
| | |XXXXX| |
|_|_|_|_|_|_|
Apapun yang kamu inginkan. Bahkan mungkin berbeda untuk nomor berbeda di atas 31.
Kode terpendek dalam byte menang.
sumber
x^n>30
trik telah saya bingung pada awalnya, tetapi ketika saya bekerja di luar apa yang terjadi saya tanpa malu-malu mencuri untuk meningkatkan jawaban saya. Sebagai kompensasi saya tetap memberi Anda suara untuk itu.아희 (Aheui) , 914 byte
Coba di sini! (harap salin dan tempel kode secara manual)
Aheui mungkin bukan untuk bermain golf, tapi tetap saja menyenangkan. :)
Output:
N = 10
N = 31
N = 40
sumber
Jelly , 73 byte
Program lengkap
TryItOnline!
Mungkin bisa bermain golf ini dengan bantuan bouncing
ŒḄ
,.Bagaimana?
sumber
Ruby, 137 byte
Poin wajah tersisa dan setelah tanggal 31.
Tidak terkurung dalam program uji
sumber
Arang , 71 byte
Catatan : Kode ini tidak berfungsi di komit terbaru saat pengeposan, karena pengindeksan string rusak. Namun, versi ini seharusnya berfungsi pada tanggal 25 Oktober. Versi ini juga berjalan dengan sukses pada versi yang saat ini ada di Try It Online .
Penjelasan
Arang adalah bahasa yang dirancang untuk seni ASCII. Keluaran diletakkan di atas kanvas, yang dicetak di akhir program.
Mendirikan
Dapatkan input dan hitung karakter wajah:
Gambar labu
Setelah loop ini, kita punya
Berikutnya:
Hasil:
Gambarlah wajahnya
Kami akan menggambar wajah dengan melihat ke kanan dan mengubahnya nanti jika perlu.
Hasil (untuk masukan
31
):Renungkan apakah itu Halloween:
Hasil akhir:
sumber
Pyth - 84 byte
Kompresi basis manual.
Test Suite .
sumber
PHP,
178176171 bytebisa menghemat 5 byte dengan linebreak fisik. Jalankan dengan
-r
.sumber
V , 97 byte
Cobalah online!
Saya kecewa dengan berapa lama ini terjadi. Ini lebih berbelit-belit dari biasanya karena V nyaris tidak bisa menangani angka, banyak byte yang berasal dari membuat kondisi peretasan. Saya akan memposting penjelasan rinci, tetapi butuh waktu lama untuk menghasilkan, jadi saya mungkin bisa melakukannya nanti. Ini hexdump:
FYI ini akan berjalan sangat lambat. Ini akan memakan waktu sekitar 10 detik. Saya tahu mengapa ini terjadi, dan saya mencari perbaikan.
sumber
Pyth, 76 byte
Cobalah online.
Tidak menggunakan kompresi. (Saya mencoba menggunakan beberapa untuk versi string data wajah, tetapi berakhir dengan panjang yang sama.)
sumber
Java 7, 237 byte
Tidak digabungkan & kode uji:
Coba di sini.
Keluaran:
sumber
C ++,
222204194 byte-18 byte terima kasih kepada Kevin Cruijssen dan -10 byte untuk bagian atas yang eksplisit
Tidak disatukan
sumber
&&
to&
dan||
to|
? Sebagai ringkasan, apakahusing S=std::string;S f(int n){char L[80],o=2*(n>30),i=-1;while(i++<80)L[i]=47<i&i<53?88:i%2?'|':i==20|i==24|i==36?n<32|i>35?94:'o':i-o%14?i-o<55?32:95:10;S t(5,95);return' '+t+'I'+t+' '+S(L+o,L+70+o);}
( 202 byte ) mengkompilasi & menjalankan?i-o
yang wajib, jadi 204 byte,PHP, 222 Bytes
Keluaran
sumber
Groovy Script,
273265216202198 byteVersi tidak disatukan
Coba di sini
Edit
Seperti Titus disebutkan, saya bisa menyimpan beberapa ukuran dengan
i < 32
bukannyai in 1..31
Edit 2
Menghapus semua ruang yang mungkin di sekitar operator ... Lupa melakukannya di awal
Edit 3
Tulis ulang kondisi ternary untuk menggunakan variabel yang disimpan, diganti
;
dengan baris baru, menghapus definisi variabel eksplisitEdit 4
Seperti yang disebutkan oleh Otávio, saya dapat menyimpan 4 byte lagi jika saya beralih dari
| |${j ? ' |^| | ' : ' | |^| '}| |
ke| | |${j ? '^| ' : ' |^'}| | |
sumber
i < 32
bukani in 1..31
?;
keduanya panjangnya 1 karakter, saya sarankan untuk memilih baris baru agar mudah dibaca. Dan menyerah dengan kebiasaan pengkodean yang baik, singkirkan ituint
dandef
.print
ternary pertama simpan kondisi dalam variabel sebagai(j=i>30)
, maka dalam 2 berikutnya gunakan hanyaj
daripada mengulangii>30
kondisi yang sama .JavaScript (ES6),
163125 byteSekarang tanpa malu-malu mencuri trik @ ETHproduction untuk memposisikan wajah. Pengkodean:
0
adalah mata,1
dan2
gigi,3
adalah sisi kiri,4
adalah sisi kanan dan5
merupakan jembatan hidung.sumber
Ruby, 168 byte
Mungkin jauh dari optimal. Membutuhkan
base64
danzlib
perpustakaan.Sebut sebagai fungsi lambda.
sumber
Python 2, 167 byte
sumber
C # 6,
223215 byteint d=int.Parse(args[0]);var x="| | |\n| |";var s=d<31?" |^| |^| |\n| | | |^"+x+" |VvVvV":(d==31?"^| |^"+x+" |^| "+x+"VvVvV| ":"o| |o"+x+" |^| "+x+"XXXXX| ");Write(" _____I_____\n| | | | "+x+s+"| |\n|_|_|_|_|_|_|");
Seluruh program ungolfed:
sumber
Func<int, string>
yang biasanya merupakan cara terpendek untuk melakukannya.Write
bukannya mendeklarasikan dan mendefinisikans
.\r\n
bukannya adil\n
?