Karena ini hari Sabtu (UTC) dan saya lapar, saya ingin sepotong pizza. Saya akan memberi Anda perintah dan saya ingin pizza ascii-art panas yang bagus . Sampai dengan tantangan?
Drive-Thru
Saya akan memesan di mana pun drive-thru Anda berada, apakah itu STDIN, parameter fungsi, argumen baris perintah, tapi saya tidak akan memasukkannya ke dalam variabel untuk Anda. (Ekspresi fungsi JS harus ditetapkan ke variabel.)
Pesanan
Pesanan saya akan terdiri dari 2 bagian. Yang pertama akan menjadi bilangan bulat positif, bukan nol dari 3
hingga 6
. Ini ukuran pizza saya. Misalnya, 6
pizza ukuran tanpa topping akan terlihat seperti:
/=====\
/ \
| |
| |
\ /
\=====/
Ukuran 5
:
/====\
/ \
| |
\ /
\====/
Ukuran 4
:
/===\
| |
| |
\===/
Ukuran 3
/==\
| |
\==/
Topping
Topping saya akan menjadi serangkaian huruf UPPERCASE. Berikut adalah nilai yang mungkin:
P - Pepperoni S - Sosis N - piNeapple J - Jalapenos B - Paprika C - baCon
Anda harus memasukkannya ke pizza di suatu tempat. Jika saya memesan ukuran 4 dan PSPCJ
, maka ini adalah output yang valid:
/===\
|PSPCJ|
| |
\===/
Begitu juga ini:
/===\
|P P J|
| S C |
\===/
Dan ini:
/===\
| |
|PSPCJ|
\===/
Saya tidak benar-benar pilih-pilih di mana topping saya di pizza, selama mereka tidak berada di kerak atau di atas satu sama lain.
Jendela penjemputan
Saya akan pergi ke banyak tempat untuk mengambil pizza saya, termasuk STDOUT, file, nilai pengembalian fungsi, tetapi bukan variabel.
Barang ekstra
- Celah standar dilarang
- Ini ditandai dengan kode-golf sehingga jawaban tersingkat dalam byte menang!
- Jangan khawatir tentang input yang tidak valid (topping> ruang pizza, dll.)
- Lihat jawaban saya (JS ES6) di bawah ini untuk contoh (Saya harap Anda bisa melakukan yang lebih baik)
̶5̶,̶ ̶N̶N̶N̶
̶ juga berlaku masukan ̶ (atau harus itu ̶̶5̶,̶ ̶N̶
̶ bukan) ̶ ̶ Juga, di mana jamur ..?? :( EDIT: Nevermind tentang pertanyaan pertama, saya melihat test case Anda memiliki 2xP
.Jawaban:
Pip ,
878175 byte74 byte kode, +1 untuk
-l
bendera.Mengambil input sebagai argumen baris perintah. Cobalah online!
Pendekatan
e
adalah baris teratas, seperti/=====\
. Jika Anda membalikkannya, itu juga baris paling bawah.y
adalah batas kiri, seperti["/" "|" "|" "\"]
. Jika Anda membalikkannya, itu juga perbatasan kanan.Kami kemudian membangun tengah dengan mengambil
b
, topping, melapisinya dengan spasi hingga panjang(a+1)*(a-2)
(di manaa
ukurannya), dan mengelompokkannya ke dalam daftar baris.Akhirnya, kami mencetak baris paling atas dengan spasi terdepan; gabungkan tengah antara
y
di kiri danRVy
di kanan, dan cetak itu; dan cetak baris paling bawah dengan spasi terdepan.sumber
Python 2 ,
202.198.190.177.162.157,146 byteCobalah online!
sumber
'\\'
,'|
', dan'/
ke variabel untuk bermain golf beberapa byte? Begitulah cara saya mencukur banyak dari jawaban JS saya.(n-1)
dengan(--n)
, yangn>4
dengann>3
,(n+1)
dengan(n+2)
, dan yang terakhir(n-1)
dengann
untuk mencukur 4 byte?--
operator!Python 3 ,
224213195 byteCobalah online!
sumber
JavaScript (ES6),
170161 byteMulai dengan mengambil pizza cacat lebar 2 dan tinggi 5 dan merentangkannya secara horizontal dan menyesuaikannya secara vertikal sesuai kebutuhan, kemudian mengganti interior dengan topping atau spasi begitu habis.
sumber
JS (ES6),
257255249248246244 byteSebut saja seperti
m(4)("PS")
untuk 1 pepperoni dan 1 sosis. Mungkin bisa bermain golf lebih banyak.sumber
Arang , 37 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Masukkan ukuran pizza.
Mulai cetak bagian atas pizza.
Jika pizza adalah salah satu ukuran yang lebih besar, tambahkan ekstra ke atas dan samping.
Cetak lebih banyak sisi pizza.
Lengkapi bagian kiri pizza dengan refleksi dengan kemungkinan tumpang tindih.
Lengkapi pizza dengan refleksi dengan tumpang tindih variabel.
Masukkan topping dan pisahkan menjadi beberapa bagian sehingga pas di dalam pizza.
sumber