Làm cho tôi một chiếc bánh pizza


17

Bởi vì đó là thứ bảy (UTC) và tôi đói, tôi muốn một lát pizza. Tôi sẽ cho bạn một đơn đặt hàng và tôi muốn một chiếc bánh pizza nóng hổi . Lên đến thử thách?

Lái xe-Thru

Tôi sẽ đặt hàng ở bất cứ nơi nào ổ đĩa của bạn, cho dù đó là STDIN, tham số chức năng, đối số dòng lệnh, nhưng tôi sẽ không đặt nó vào một biến cho bạn. (Các biểu thức hàm JS phải được gán cho một biến.)

Mệnh lệnh

Đơn hàng của tôi sẽ có 2 phần. Đầu tiên sẽ là một số nguyên dương, khác không từ 3đến 6. Đây là kích thước của pizza của tôi. Chẳng hạn, một 6chiếc pizza cỡ không có lớp phủ bên trên sẽ trông như sau:

 /=====\
/       \
|       |
|       |
\       /
 \=====/

Một kích thước 5:

 /====\
/      \
|      |
\      /
 \====/

Một kích thước 4:

 /===\
|     |
|     |
 \===/

Một kích thước 3

 /==\
|    |
 \==/

Mặt trên

Topppings của tôi sẽ là một chuỗi các chữ cái UPPERCASE. Dưới đây là các giá trị có thể:

P - Pepperoni
S - xúc xích
N - piNnut
J - Jalapenos
B - Ớt chuối
C - baCon

Bạn phải đặt chúng trên bánh pizza ở đâu đó. Nếu tôi đặt một kích thước 4 và PSPCJ, thì đây là một đầu ra hợp lệ:

 /===\
|PSPCJ|
|     |
 \===/

Đây là:

 /===\
|P P J|
| S C |
 \===/

Và điều này:

 /===\
|     |
|PSPCJ|
 \===/

Tôi không thực sự kén chọn về vị trí của lớp phủ trên bánh pizza, miễn là chúng không nằm trên lớp vỏ hoặc trên nhau.

Cửa sổ đón khách

Tôi sẽ đi đến rất nhiều nơi để nhận pizza của mình, bao gồm STDOUT, một tệp, giá trị trả về của một hàm, nhưng không phải là một biến.

Thêm thứ

  • Sơ hở tiêu chuẩn bị cấm
  • Đây được gắn thẻ để câu trả lời ngắn nhất tính bằng byte sẽ thắng!
  • Đừng lo lắng về đầu vào không hợp lệ (toppings> không gian pizza, v.v.)
  • Xem câu trả lời của tôi (JS ES6) bên dưới để biết ví dụ (Tôi hy vọng bạn có thể làm tốt hơn)

3
Umm, vậy bạn cũng có thể chọn chiếc bánh pizza của mình trên Drive-thru chứ?
Matthew Roh

1
Bạn có kén chọn tôi lấp đầy góc trên bên phải và dưới cùng bên phải của hộp pizza với khoảng trắng không? ;)
DLosc

1
@DLosc không, bất kỳ khoảng trắng ở cuối dòng nào (bao gồm một dòng mới ở cuối đầu ra) là tùy chọn nhưng không bắt buộc.
lập trình

1
CAN pizza có nhiều hơn một với một trong các toppings ̶ vì vậy nếu bạn như dứa: ̶ ̶ ̶5̶,̶ ̶N̶N̶N̶̶ cũng là một giá trị đầu vào ̶ (hoặc nên nó được ̶ ̶5̶,̶ ̶N̶̶ thay) ̶ ̶ Ngoài ra, nơi là nấm ..? :( EDIT: Đừng bận tâm về câu hỏi đầu tiên, tôi thấy các trường hợp kiểm tra của bạn có P
gấp đôi

Tôi có thể gửi một liên kết orderup ? xD
FantaC

Câu trả lời:


1

Pip , 87 81 75 byte

74 byte mã, +1 cho -lcờ.

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

Lấy đầu vào làm đối số dòng lệnh. Hãy thử trực tuyến!

Tiếp cận

elà hàng trên cùng, chẳng hạn như /=====\. Nếu bạn đảo ngược nó, nó cũng là hàng dưới cùng.

ylà đường viền bên trái, chẳng hạn như ["/" "|" "|" "\"]. Nếu bạn đảo ngược nó, đó cũng là đường viền bên phải.

Sau đó, chúng tôi xây dựng phần giữa bằng cách lấy b, phần trên, đệm nó với khoảng trắng theo chiều dài (a+1)*(a-2)(trong đó alà kích thước) và nhóm nó vào một danh sách các hàng.

Cuối cùng, chúng tôi in hàng trên cùng với một không gian hàng đầu; nối giữa giữa ybên trái và RVybên phải và in nó; và in hàng dưới cùng với một không gian hàng đầu.


Cái này có hoạt động với pizza (không có toppings) không?
lập trình

@ lập trình viên5000 Có - trong trường hợp đó, cmdline arg thứ hai phải là một chuỗi rỗng (nếu bạn đang chạy nó từ một dòng lệnh thực tế, bạn sẽ phải trích dẫn nó).
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]

Hãy thử trực tuyến!


Này, bạn có thể gán '\\', '|'và '/cho các biến để chơi golf một vài byte không? Đó là cách tôi cạo rất nhiều câu trả lời JS của tôi.
lập trình

Tôi chỉ đang làm việc đó thôi !!!!
Keerthana Mitchhakaran

1
Ngoài ra, bạn có thể thay thế cái đầu tiên (n-1)bằng (--n), n>4s bằng n>3, (n+1)với (n+2)và cuối cùng (n-1)bằng ncách tắt 4 byte không?
lập trình

2
python không hỗ trợ --nhà điều hành!
Keerthana Mitchhakaran


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)

Hãy thử trực tuyến!


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)

Bắt đầu bằng cách lấy một chiếc bánh pizza biến dạng có chiều rộng 2 và chiều cao 5 và kéo dài nó theo chiều ngang và điều chỉnh theo chiều dọc khi thích hợp, sau đó thay thế phần bên trong bằng lớp phủ hoặc khoảng trống khi chúng hết.


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))

Gọi nó như m(4)("PS")cho 1 pepperoni và 1 xúc xích. Có lẽ có thể được chơi golf nhiều hơn.


1
Jeez, cho một số người khác thời gian để trả lời: P
Pavel

1
Tôi chỉ muốn cung cấp một ví dụ, tôi hy vọng điều này sẽ không thắng.
lập trình

0

Than , 37 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Giải trình:

Nθ

Nhập kích thước của pizza.

 /==

Bắt đầu in phần trên của pizza.

×=⸿/›θ⁴

Nếu pizza là một trong những kích thước lớn hơn, hãy thêm vào phía trên và bên.

⸿|

In thêm mặt của bánh pizza.

‖BO↓﹪θ²

Hoàn thành nửa bên trái của bánh pizza bằng cách phản chiếu với sự chồng chéo có thể.

‖BO⊕﹪θ²

Hoàn thành chiếc bánh pizza bằng sự phản chiếu với sự chồng chéo thay đổi.

J¹¦¹⪪S⊕θ

Nhập toppings và chia chúng thành từng miếng để chúng sẽ phù hợp với bên trong bánh pizza.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.