首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >比萨饼,比萨,深度晚餐比萨!

比萨饼,比萨,深度晚餐比萨!
EN

Code Golf用户
提问于 2017-04-05 23:43:01
回答 3查看 751关注 0票数 10

四月五日是国家深度DIsh比萨日,这个挑战的主题。给定一个正整数n (n大于0),创建一个ASCII深盘披萨。实际深盘比萨饼显示:

正如你所看到的,在比萨饼的底部和周围有一层皮。

如何制作

披萨

地壳由两层组成。第一层是n tall和n*3 long。长度是最高行中的字符数(包括空格)。因此,假定n为1,第一层如下所示:

代码语言:javascript
复制
\_/  1 character tall
 3 characters long

如果n是两个:

代码语言:javascript
复制
\    /   2 characters tall
 \__/
  6 characters long

现在是地壳的第二层。它将走出第一个,内地壳,因此,它将是n+2字符高和(n*3)+6)字符长。给定n是一种:

代码语言:javascript
复制
\       /  3 characters tall
 \     /
  \___/
   9 characters long (3 underscores, 3 slashes on either side)

如果n是两个:

代码语言:javascript
复制
\          / 4 characters high
 \        /
  \      /
   \____/
    12 characters long

然后,您将匹配两个最高的\/对彼此的内部和外部地壳。在n中是1:

代码语言:javascript
复制
\ \   / /
 \ \_/ /
  \___/

如果做得正确,它看起来就像没有顶部的V,每个层之间都有一个字符差异。说到上面,地壳将由一对/\连接在一起,用(n*3)+2长下划线分隔以完成外壳和比萨饼。

示例

如果n为1:

代码语言:javascript
复制
/\_____/\
\ \   / /
 \ \_/ /
  \___/

n为2:

代码语言:javascript
复制
/\________/\
\ \      / /
 \ \    / /
  \ \__/ /
   \____/ 

n为3:

代码语言:javascript
复制
/\___________/\
\ \         / /
 \ \       / /
  \ \     / /
   \ \___/ /
    \_____/

制胜标准

这是密码-高尔夫,所以以字节为单位的最短代码获胜!

EN

回答 3

Code Golf用户

发布于 2017-04-06 10:56:46

MATLAB,333个字节

(懒散的尝试)

代码语言:javascript
复制
function t(n);p=@(q)fprintf(q);s=@(x)p(' ');r=@()p('/ /');l=@()p('\\ \\');f=@()p('/');b=@()p('\\');u=@(x)p('_');h=@()p('/\\');e=@()p('\n');h();arrayfun(u,1:3*n+2);h();e();for i=1:n;arrayfun(s,1:i-1);l();arrayfun(s,1:3*n-2*(i-1));r();e();end;arrayfun(s,1:n);l();arrayfun(u,1:n);r();e();arrayfun(s,1:n+1);b();arrayfun(u,1:n+2);f();e();

格式:

代码语言:javascript
复制
function d(n)
p=@(q)fprintf(q);
s=@(x)p(' ');
r=@()p('/ /');
l=@()p('\\ \\');
f=@()p('/');
b=@()p('\\');
u=@(x)p('_');
h=@()p('/\\');
e=@()p('\n');
h();arrayfun(u,1:3*n+2);h();e();
for i=1:n
arrayfun(s,1:i-1); l(); arrayfun(s,1:3*n-2*(i-1)); r();e();
end
arrayfun(s,1:n); l(); arrayfun(u,1:n); r();e();
arrayfun(s,1:n+1); b(); arrayfun(u,1:n+2); f();e();

基本思想是,我有功能处理打印所有东西,然后我只是蛮力它。用于循环的是内部层的顶部和底部之间的n层。(空格)和_的重复使用带有数组输入的arrayfun完成。如果我以后有更多的时间,我会想出更多有趣的方法来做这件事。

票数 2
EN

Code Golf用户

发布于 2017-04-06 09:04:30

批处理,200字节

代码语言:javascript
复制
@set l=@for /l %%i in (1,1,%1)do @call 
@set t=
@set s=
%l%set s=___%%s%%
@echo /\_%s%_/\
%l%echo %%t%%\ \%%s:_= %%/ /&call set t= %%t%%&call set s=%%s:~2%%
@echo %t%\ \%s%/ /
@echo %t% \_%s%_/

t包含左缩进,s包含内部;它的_s位于中间行的空格中。l的存在只是为了避免一些重复。

票数 1
EN

Code Golf用户

发布于 2021-06-04 02:09:04

维沙尔,59字节

代码语言:javascript
复制
k/₴3*⇧\_*k/+,›(n`\ \\`꘍₴nεd+n⁰=` _`$i*₴`/ /`,)›\\꘍₴⇧\_*\/+,

在网上试试!

票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/115408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档