Buatkan saya pizza

17

Karena ini hari Sabtu (UTC) dan saya lapar, saya ingin sepotong pizza. Saya akan memberi Anda perintah dan saya ingin pizza 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 3hingga 6. Ini ukuran pizza saya. Misalnya, 6pizza 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 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)
programmer5000
sumber
3
Umm, Jadi kamu juga bisa mengambil pizza di Drive-thru?
Matthew Roh
1
Apakah Anda pilih-pilih tentang saya mengisi sudut kanan atas dan kanan bawah kotak pizza dengan spasi? ;)
DLosc
1
@Dosc, tidak, spasi spasi tambahan di akhir baris apa pun (termasuk baris tambahan di akhir output) adalah opsional tetapi tidak diperlukan.
programmer5000
1
Dapat pizza memiliki lebih dari satu untuk satu topping ̶ Jadi jika Anda seperti nanas:? ̶ ̶ ̶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 2x P.
Kevin Cruijssen
Dapatkah saya memposting Orderup tautan? xD
FantaC

Jawaban:

1

Pip , 87 81 75 byte

74 byte kode, +1 untuk -lbendera.

e:'/.'=Xa-1.'\Y['/'\]Xa//5J'|X2-a%2^xPs.ePy.(b.sXa*a-a-2-#b<>a+1).RVys.RVe

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 mana aukurannya), dan mengelompokkannya ke dalam daftar baris.

Akhirnya, kami mencetak baris paling atas dengan spasi terdepan; gabungkan tengah antara ydi kiri dan RVydi kanan, dan cetak itu; dan cetak baris paling bawah dengan spasi terdepan.

DLosc
sumber
Apakah ini berhasil dengan pizza keju (tanpa topping)?
programmer5000
@ programmer5000 Ya - dalam hal ini cmdline arg kedua harus berupa string kosong (jika Anda menjalankannya dari command-line yang sebenarnya, Anda harus mengutipnya).
DLosc
5

Python 2 , 202.198.190.177.162.157, 146 byte

n,t=input()
y=n+1
s=' '
l=' /'+'='*(n-1)+'\\ '+('','\n/'+s*y+'\\')[n>4]+'\n|'
print l+t[:y].center(y,s)+('','|\n|'+t[y:].center(y,s))[y%2]+l[::-1]

Cobalah online!

Keerthana Prabhakaran
sumber
Hei, bisakah Anda menetapkan '\\', '|', dan '/ke variabel untuk bermain golf beberapa byte? Begitulah cara saya mencukur banyak dari jawaban JS saya.
programmer5000
Saya hanya mengerjakannya !!!!
Keerthana Prabhakaran
1
Juga, dapatkah Anda mengganti yang pertama (n-1)dengan (--n), yang n>4dengan n>3, (n+1)dengan (n+2), dan yang terakhir (n-1)dengan nuntuk mencukur 4 byte?
programmer5000
2
python tidak mendukung --operator!
Keerthana Prabhakaran
136 bytes
FlipTack
2

Python 3 , 224 213 195 byte

n,t=eval(input())
k=n+1
y=print
i=0
f,s,e,b,p="/ =\\|"
t+=s*99
y(s+f+e*~-n+b)
if n>4:y(f+t[:k]+b);i+=k
y(p+t[i:i+k]+p);i+=k
if~-n%2:y(p+t[i:i+k]+p);i+=k
if n>4:y(b+t[i:i+k]+f);i+=k
y(s+b+e*~-n+f)

Cobalah online!

ovs
sumber
1

JavaScript (ES6), 170 161 byte

(n,t,a=[1,,n%2||2,,1])=>` /=\\
/___\\
|___|
\\___/
 \\=/`[r=`replace`](/.+/g,s=>s.repeat(a.pop()||n>4))[r](/=|_\b/g,`$&`.repeat(n-1))[r](/_/g,_=>t[i++]||` `,i=0)

Mulai 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.

Neil
sumber
0

JS (ES6), 257 255 249 248 246 244 byte

m=s=>t=>(r="/",k="\\",p=" ",f="\n",x="|",c=f+x,q="",t=p+t,z=(s>2?p:q)+r+"=".repeat(s-1)+k+(s>4?f+r+p.repeat(++s)+k:q)+c+p.repeat(s)+x+(!s?c+p.repeat(s)+x:q)+p+(s>5?f+k+p.repeat(s)+r:q)+f+p+k+"=".repeat(s-2)+r,i=-1,z.replace(/ /g, x=>t[++i]||p))

Sebut saja seperti m(4)("PS")untuk 1 pepperoni dan 1 sosis. Mungkin bisa bermain golf lebih banyak.

programmer5000
sumber
1
Astaga, beri waktu pada orang lain untuk menjawab: P
Pavel
1
@ Григорий Перельман Saya hanya ingin memberikan contoh, saya harap ini tidak menang.
programmer5000
0

Arang , 37 byte

Nθ /==×=⸿/›θ⁴⸿|‖BO↓﹪θ²‖BO⊕﹪θ²J¹¦¹⪪S⊕θ

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

Nθ

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.

‖BO↓﹪θ²

Lengkapi bagian kiri pizza dengan refleksi dengan kemungkinan tumpang tindih.

‖BO⊕﹪θ²

Lengkapi pizza dengan refleksi dengan tumpang tindih variabel.

J¹¦¹⪪S⊕θ

Masukkan topping dan pisahkan menjadi beberapa bagian sehingga pas di dalam pizza.

Neil
sumber