给我披萨


17

因为是星期六(UTC)并且我很饿,所以我想吃一片披萨。我会给您点菜,我想要一个美味的热披萨。迎接挑战?

直通车

无论您的驱动力是什么,无论是STDIN,函数参数,命令行参数,我都将下订单,但是我不会为您放置变量。(JS函数表达式必须分配给变量。)

命令

我的订单分为两部分。第一个将是从3到的正非零整数6。这是我的比萨饼的大小。例如,6没有浇头的比萨饼看起来像:

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

尺寸5

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

尺寸4

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

尺寸 3

 /==\
|    |
 \==/

浇头

我的浇头是一串大写字母。以下是可能的值:

P-意大利辣香肠
S-香肠
N-piNeapple
J-墨西哥胡椒
B-香蕉辣椒
C-培根

您必须将它们放在披萨的某个地方。如果我订购大小为4和PSPCJ,则这是有效的输出:

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

这是这样的:

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

还有这个:

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

我对浇头在披萨上的位置并不很挑剔,只要它们不在外壳上或彼此之间即可。

取货窗口

我将去很多地方拿起我的披萨,包括STDOUT,文件,函数的返回值,而不是变量。

多余的东西

  • 禁止标准漏洞
  • 这被标记为因此最短答案以字节为单位!
  • 不必担心输入无效(浇头>披萨空间等)
  • 请参阅下面的示例我的答案(JS ES6)(希望您能做得更好)

3
嗯,所以您也可以在Drive-thru上拿起比萨?
马修·罗

1
您对我在披萨盒的右上角和右下角填充空白感到挑剔吗?;)
DLosc

1
@DLosc否,任何行末尾的任何结尾空格(包括输出末尾的结尾换行符)都是可选的,但不是必需的。
程序员

1
可以比萨有一个以上的为一体的浇头̶所以如果你喜欢菠萝:̶̶ ̶5̶,̶ ̶N̶N̶N̶̶也是一个有效的输入̶(还是应̶ ̶5̶,̶ ̶N̶̶代替)̶̶此外,在哪里蘑菇..? :(编辑:没关系关于第一个问题,我看到你的测试用例已经2倍P
凯文Cruijssen

我可以发布订购链接吗?xD
FantaC

Answers:


1

87 81 75字节

74个字节的代码,-l标志+1 。

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

将输入作为命令行参数。在线尝试!

方法

e是第一行,例如/=====\。如果您将其反转,则它也是最底行。

y是左边框,例如["/" "|" "|" "\"]。如果您将其反转,那么它也是正确的边界。

然后,我们通过取b,浇头,在中间加长至一定长度(a+1)*(a-2)(其中a是大小)的空格,然后将其分组为一个行列表来构造中间。

最后,我们在第一行打印一个前导空格;y在左右之间连接中间RVy,并打印出来;并在底行打印一个前导空格。


这可与奶酪(无浇头)比萨一起使用吗?
程序员

@ programmer5000是的-在这种情况下,第二个cmdline arg应该是一个空字符串(如果从实际命令行运行它,则必须将其引号)。
DLosc

5

Python 2中202,198,190,177,162,157, 146个字节

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]

在线尝试!


嘿,您可以分配'\\''|”和'/变量高尔夫掉几个字节?这就是我从JS答案中省了很多钱的方法。
程序员

我只是在做那个!!!
Keerthana Prabhakaran'4

1
此外,您可以替换第一个(n-1)(--n)n>4s的n>3(n+1)(n+2),最终(n-1)n剃掉4个字节?
程序员

2
python不支持--运算符!
Keerthana Prabhakaran'4


2

Python 3中224个 213 195字节

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)

在线尝试!


1

的JavaScript(ES6),170个 161字节

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

首先从变形的宽度为2的高度为5的比萨饼开始,水平拉伸并适当调整垂直,然后在配料用完后用填充物或空间代替内部。


0

JS(ES6),257个 255 249 248 246 244字节

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

称呼它像m(4)("PS")1个意大利辣香肠和1个香肠。大概可以打更多的高尔夫球。


1
耶兹,给其他人一些时间回答:P
Pavel

1
@ГригорийПерельман我只是想提供一个例子,希望这不会成功。
程序员

0

木炭,37字节

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

在线尝试!链接是详细版本的代码。说明:

Nθ

输入比萨的大小。

 /==

开始打印披萨的顶部。

×=⸿/›θ⁴

如果披萨是较大的披萨之一,则在顶部和侧面添加更多的披萨。

⸿|

打印更多披萨的一面。

‖BO↓﹪θ²

通过反射完成比萨的左半部分,并可能重叠。

‖BO⊕﹪θ²

通过反射以可变的重叠完成比萨。

J¹¦¹⪪S⊕θ

输入浇头并将其切成小块,使其适合放入比萨饼中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.