พิซซ่าพิซซ่าพิซซ่าจานลึก!


11

5 เมษายนเป็นวันแห่งชาติ Deep DIsh Pizza Day ธีมของความท้าทายนี้ รับจำนวนเต็มบวกn( nมากกว่า 0) สร้างพิซซ่าจานลึก ASCII แสดงพิซซ่าจานลึกจริง:

พิซซ่า!

อย่างที่คุณเห็นมีชั้นของเปลือกโลกอยู่ด้านล่างและล้อมรอบส่วนที่เหลือของพิซซ่า

วิธีทำพิซซ่า

เปลือกโลกทำจากสองชั้น ชั้นแรกจะnสูงและn*3ยาว ความยาวคือจำนวนอักขระ (รวมช่องว่าง) ในบรรทัดสูงสุด เมื่อได้รับnคือ 1 เลเยอร์แรกจะเป็นดังนี้:

\_/  1 character tall
 3 characters long

ถ้าnเป็นสอง:

\    /   2 characters tall
 \__/
  6 characters long

ทีนี้สำหรับชั้นที่สองของเปลือกโลก มันจะออกไปข้างนอกเปลือกโลกชั้นแรกดังนั้นมันจะn+2สูง(n*3)+6)ตัวอักษรและยาวตัว รับnเป็นหนึ่ง:

\       /  3 characters tall
 \     /
  \___/
   9 characters long (3 underscores, 3 slashes on either side)

ถ้าnเป็นสอง:

\          / 4 characters high
 \        /
  \      /
   \____/
    12 characters long

จากนั้นคุณจะจับคู่คู่สูงสุดทั้งสองคู่เข้า\/ด้วยกันสำหรับเปลือกด้านในและด้านนอก ในnคือ 1:

\ \   / /
 \ \_/ /
  \___/

ถ้าทำอย่างถูกต้องมันจะดูเหมือน V ที่ไม่มีท็อปส์ซูที่มีความแตกต่างของอักขระหนึ่งตัวระหว่างแต่ละเลเยอร์ การพูดของท็อปส์, เปลือกโลกจะถูกรวมเข้าด้วยกันโดย/\แยกออกจากกันด้วยเส้นขีด(n*3)+2ยาวเพื่อทำเปลือกโลกและพิซซ่าให้สมบูรณ์

ตัวอย่าง

ถ้าnเป็น 1:

/\_____/\
\ \   / /
 \ \_/ /
  \___/

n คือ 2:

/\________/\
\ \      / /
 \ \    / /
  \ \__/ /
   \____/ 

n คือ 3:

/\___________/\
\ \         / /
 \ \       / /
  \ \     / /
   \ \___/ /
    \_____/

เกณฑ์การชนะ

นี่คือดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ!


1
มีบางอย่างที่ดูไม่ออกในเปลือกโลกชั้นใน หนึ่งสำหรับ n = 1 ดูเหมือนว่าจะขนาดเล็กหนึ่งสำหรับ n = 2 ลักษณะเหมือนเปลือกชั้นในจากสุดท้าย n = 1 ตัวอย่าง ฯลฯ ...
อดัม

เราสามารถใช้-แทน_?
Okx

@Okx ไม่คุณอาจจะไม่
Anthony Pham

สุขสันต์วันจานพิซซ่าลึก!
Arjun

คำตอบ:


2

ถ่าน 35 ไบต์

Nθ←_←×_θ↖θ↖²M→/P×_⁺²×²θ↘θ↘¹\×_θ‖BOθ

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

Nθ

ป้อนขนาดของพิซซ่า

←_←×_θ

พิมพ์ส่วนหนึ่งของฐานเปลือกนอก

↖θ↖²

พิมพ์เปลือกนอกด้านซ้าย

M→/P×_⁺²×²θ

พิมพ์ส่วนหนึ่งของเปลือกโลกด้านบน

↘θ↘¹\

พิมพ์ขอบด้านในด้านซ้าย

×_θ

พิมพ์ส่วนหนึ่งของฐานเปลือกด้านใน

‖BOθ

สะท้อนให้เสร็จสมบูรณ์พิซซ่า

โปรดทราบว่าการเพิ่มที่ทันสมัยให้กับ Charcoal จะลดขนาดลงเหลือ 31 ไบต์:

Nθ←×_⊕θ↖θ↖²M→/P×_⊗⊕θ↘⊕θ\×_θ‖BOθ

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด


ไม่แน่ใจว่าฉันแนะนำบั๊กโดยไม่ตั้งใจหรือไม่ แต่การเติมจะไม่ทำงานอย่างถูกต้องหรือไม่
ASCII เท่านั้นเท่านั้น

@ ASCII-only Filling? อย่างน้อยกรณีทดสอบดูเหมาะสมกับฉัน; คุณคิดว่าอะไรไม่ทำงาน
Neil

ฉันคิดว่ามันใช้งานไม่ได้กับอินพุต 4 ขึ้นไป
ASCII เท่านั้นเท่านั้น

@ ASCII- เพียง Huh ฉันจะมองข้ามสิ่งนั้นได้อย่างไร ...
Neil

5

JavaScript (ES6), 136 ไบต์

f=
n=>"/\\"+(r=s=>s[0][0].repeat(n-1)+s)`_`+r`_`+r`___/\\
`+r` `.replace(/ /g,"$`\\ \\$`   $'$'$'/ /\n")+r` \\ \\`+r`_/ /
`+r`  \\`+r`___/`
<input type=number min=1 oninput=o.textContent=f(this.value)><pre id=o>

พิซซ่าทั้งหมดมีการทำซ้ำมากดังนั้นrฟังก์ชั่น (ออกแบบเป็นเทมเพลตที่ติดแท็ก) จะทำซ้ำอักขระตัวแรกของnเวลาที่ป้อน วิธีนี้จะจัดการกับสองบรรทัดด้านบนและด้านล่างของพิซซ่า ตรงกลางซ้ำแล้วซ้ำอีกโดยแทนที่สตริงของช่องว่าง; $`และ$'subsitutions โดยอัตโนมัติสอดคล้องกับการเพิ่มและลดจำนวนช่องว่างจึงวางตำแหน่ง\ \และ/ /เหมาะสม


2

Python 2, 153 151 bytes

ลองออนไลน์

n=input()
a=' '*n
b='_'*n
print'/\\__'+b*3+'/\\'
i=0
exec"print' '*i+'\ \\\\'+' '*(3*n-2*i)+'/ /';i+=1;"*n
print a+'\ \\'+b+'/ /'
print a+' \\_'+b+'_/'

-2 ไบต์โดยการแทนที่ค่าซ้ำกับตัวแปรด้วย @KoishoreRoy


1
แทนที่จะprint' '*=~n+'\\'+'_'*-~n+'_/'เขียนไม่ได้print' '*i+' \\_'+'_'*n+'_/'? (หรือnแทนiแต่ฉันกำลังคัดลอกบรรทัดก่อนหน้า)
Neil

@ ไม่มีฉันไม่สามารถเปลี่ยน-~nเป็นiเพราะ ณ จุดi==nนี้ แต่การเปลี่ยนแปลงครั้งที่สองนั้นดี นอกจากนี้ฉันสั้น-~nลงขอบคุณความคิดของคุณ
Dead Possum

ฉันไม่ได้เพียงแค่การเปลี่ยน-~nไปiเพราะผมได้รับการเพิ่มพื้นที่ (แต่คุณดูเหมือนจะได้ทำสิ่งนั้นออกมาด้วยตัวคุณเองอยู่แล้วนอกจากนี้ฉันได้สังเกตแล้วnและiเหมือนกัน ณ จุดนี้)
นีล

2

MATLAB, 333 ไบต์

(ความพยายาม Lazy-ish)

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

จัดรูปแบบ:

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พร้อมกับอินพุตอาร์เรย์ จะพยายามคิดหาวิธีที่น่าสนใจมากกว่านี้ถ้าฉันมีเวลามากขึ้นในภายหลัง


ลองออนไลน์! (ในระดับแปดเสียง)
Luis Mendo

2

ถ่าน , 54 52 ไบต์

A⁺N²β↖M↓↙¹M→↘βM↑×_β↗βM←↖¹M↓↙βM↑←×_⁺β±²↖βM↘M→×_⁺×β³±⁴

คำอธิบาย:

A⁺N²β       Assign input + 2 to the variable β
↖             Move up and left one, printing a \
M↓           Move pointer down one
↙¹            Move down and left one, printing a /
M→           Move pointer right one
↘β            Move down and right β times
M↑           Move pointer up
×_β           Write underscores β times
↗β            Move up and right β times
M←           Move pointer right one
↖¹           Move up and left one
M↓           Move pointer down one
↙β           Move down and right β times
M↑           Move up one
←             Set direction to left
×_⁺β±²        Write underscores β - 2 times
↖β            Move up and left β times
M↘           Move down and right one
M→           Move right one
×_⁺×β³±⁴      Write underscores (β * 3) - 4 times

คำตอบก่อนหน้าของฉันอยู่ใน Retina ซึ่งเป็นภาษาที่ฉันไม่ได้โพสต์คำตอบก่อนหน้านี้ ตอนนี้คุณมีคำตอบใน Charcoal ซึ่งฉันยังไม่ได้โพสต์คำตอบไปก่อน

ลองออนไลน์!


2

PHP, 209 200 137 135 ไบต์

ในที่สุดก็เต้น JS :)

echo($f=str_pad)("/\\",1+3*$x=$n=1+$argn,_),"/\\
";for(;$n;)echo$f("\\ \\",2*$n+$x," _"[!--$n]),"/ /
",$p.=" ";echo$f("\\",2+$x,_),"/";

รับอินพุตจาก STDIN; ทำงานด้วย-nRหรือสั่งซื้อพิซซ่าครอบครัว

แตกหัก

// print top
echo($f=str_pad)("/\\",1+3*$x=$n=1+$argn,_),"/\\\n";
// loop N+1 times
for(;$n;)
    // print current line and left padding for next line
    echo$f("\\ \\",2*$n+$x," _"[!--$n]),"/ /\n",$p.=" ";
// print bottom
echo$f("\\",2+$x,_),"/";

2

JavaScript (ES6), 205 ไบต์


นี่คือโพสต์แรกของฉัน!

เพิ่มที่จุดเริ่มต้นและเรียกเช่นf=f(arg)

n=>{a=[];w=" ";u="_";t=`/\\${u.repeat(n*3+2)}/\\
`;for(i=0;i<n+1;i++){c=i==n?u:w;a.push(`${w.repeat(i)}\\ \\${c.repeat((n+1-i*2)+n+(n-1))}/ /
`)};return [t,...a,`${w.repeat(i)}\\${u.repeat(n+2)}/`].join``}

หมายเหตุ: จำเป็นต้องมีการขึ้นบรรทัดใหม่ทั้งหมด!


f=n=>{a=[];w=" ";u="_";t=`/\\${u.repeat(n*3+2)}/\\
`;for(i=0;i<n+1;i++){c=i==n?u:w;a.push(`${w.repeat(i)}\\ \\${c.repeat((n+1-i*2)+n+(n-1))}/ /
`)};return [t,...a,`${w.repeat(i)}\\${u.repeat(n+2)}/`].join``}

document.querySelector("#elem").innerHTML = f(+prompt("Enter a Number"));
<pre id="elem">


คำอธิบาย

รหัสจะประกาศ Array aก่อน จากนั้นจะประกาศwและuมีค่าของช่องว่างและขีดล่างตามลำดับ จากนั้นมันจะประกาศตัวแปร String เพื่อเก็บค่าของเปลือกโลก (ซึ่งสามารถคำนวณได้ตาม/\+(n*3+2 underscores)+/\ที่ระบุไว้ใน Challenge) หลังจากนั้นด้วยการforวนซ้ำและ a Template Literalกลางของพิซซ่าจะถูกสร้างขึ้น (โดยแต่ละชั้นจะมีiช่องว่างที่จุดเริ่มต้นและ(n+1-i*2)+n+(n-1)ช่องว่างระหว่าง\ \และระหว่าง/ /ซึ่งiแสดงถึงดัชนีของforวง) ในที่สุดส่วนล่างของพิซซ่าถูกสร้างขึ้น ( (i whitespaces)+\+(n+2 underscores)+/) ทุกส่วนเชื่อมต่อกันและเอาท์พุท (ted)


หากมีเหตุผลบางข้อมูลโค้ดไม่แสดงศิลปะ ASCII ได้อย่างถูกต้องได้ดูที่นี่

ขอให้มีความสุขทุกวันพิซซ่าจานลึกกับทุกคน!



1

แบตช์ 200 ไบต์

@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มีภายใน; มัน_ถูกแบ่งย่อยด้วยช่องว่างในแถวกลาง lมีอยู่เพียงเพื่อหลีกเลี่ยงการซ้ำซ้อน


0

V , 57 ไบต์

i\ \´ / /ÙãxX2r_>>Ù>>lxxE2r_À­ñHãyêP>GÄXã2é ñHÄÒ_R/\$h.

ลองออนไลน์!

เนื่องจาก (ตามปกติ) สิ่งนี้มีอักขระที่ไม่ใช่ ASCII ที่น่ารังเกียจและไม่สามารถพิมพ์ได้มากมายนี่คือ hexdump:

00000000: 695c 205c b420 2f20 2f1b d9e3 7858 3272  i\ \. / /...xX2r
00000010: 5f3e 3ed9 3e3e 6c78 7845 3272 5fc0 adf1  _>>.>>lxxE2r_...
00000020: 48e3 79ea 503e 47c4 58e3 32e9 20f1 48c4  H.y.P>G.X.2. .H.
00000030: d25f 522f 5c1b 2468 2e                   ._R/\.$h.

ฉันจะโพสต์คำอธิบายโดยละเอียดเพิ่มเติมในไม่ช้า แต่นี่เป็นภาพรวมระดับสูง:

i\ \´ / /ÙãxX2r_>>Ù>>lxxE2r_
"Create 
"\ \    / /
" \ \__/ /
"  \____/
"This can probably be compressed a lot more

À­ñHãyêP>GÄXã2é ñ
"*arg1 times*, expand the pizza slice

HÄÒ_R/\$h.
"Add the crust

0

C (เสียงดังกราว) , 211 215 ไบต์

i,l;f(n){l=n*3+6;char u[l];for(i=0;i<l;)u[i++]='_';u[l-1]=i=0;printf("/\\%.*s/\\\n",l-4,u);for(;i<n;i++)printf("%*s\\ \\%*.s/ /\n",i,"",n*3-(2*i),"");printf("%*.s\\ \\%.*s/ /\n%*.s\\%.*s/\n",i,"",n,u,i+1,"",n+2,u);}

ลองออนไลน์!

พริตตี้รหัส:

i,l;
f(n) {
    l = n*3+6;
    char u[l];

    // Initialize u[] with a full line of underscores,
    for (i=0;i<l;)
        u[i++] = '_';

    // Make sure the string ends in a valid way
    u[l] = i = 0;

    /* Print the crust 'top'
     * l-4 dashes are needed because '/\/\'
     * %.*s notation to pad (l-4) bytes of the underscore string
     */
    printf("/\\%.*s/\\\n", l-4,u);

    /* Print n rows of just 'walls' \ \  / /
     * each row has i=0++ leading spaces,
     * and each row has n*3-(2i) center spaces
     */
    for(; i<n; i++)
        printf("%*s\\ \\%*.s/ /\n", i,"", n*3-(2*i), "");

    /* Print i spaces, '\ \', n underlines, '/ /'
     * then i+1 spaces, '\', n+2 underlines, and '/'
     */
    printf("%*.s\\ \\%.*s/ /\n%*.s\\%.*s/\n",i,"",n,u,i+1,"",n+2,u);
}

การแก้ไข:

  • ลบ s [l] และเชื่อมโยงโดยเปลี่ยนจาก% สัญกรณ์เป็น% .s
  • เพิ่มฟังก์ชั่นกระดาษห่อสำหรับการปฏิบัติตาม & ลองออนไลน์



0

CJam, 89 ไบต์

อันนี้จริง ๆ แล้วยาวกว่าโซลูชันอื่น ๆ ของฉันในขณะนี้ แต่ฉันคิดว่ามันสามารถเล่นกอล์ฟได้มากขึ้น:

ri{:T)_S*a*ee_{~'\t}%TS*aTU+*'_f+@{~'/t}%W%++z}:K~2S*f{\+}T1:U+K..e>"/\\"'_T3*(*1$++a\+N*

การติดตามสแต็ก:

"2" ; r
2 ; i
2 {:T)_S*a*ee_{~'\t}%TS*aTU+*'_f+@{~'/t}%W%++z} ; {}
2 {:T)_S*a*ee_{~'\t}%TS*aTU+*'_f+@{~'/t}%W%++z} ; :K
2 ; ~
2 ; :T
3 ; )
3 3 ; _
3 3 " " ; S
3 "   " ; *
3 ["   "] ; a
["   " "   " "   "] *
[[0 "   "] [1 "   "] [2 "   "]] ; ee
[[0 "   "] [1 "   "] [2 "   "]] [[0 "   "] [1 "   "] [2 "   "]] ; _
[[0 "   "] [1 "   "] [2 "   "]] ["\  " " \ " "  \\"] ; {~'\t}%
[[0 "   "] [1 "   "] [2 "   "]] ["\  " " \ " "  \\"] 2 ; T
[[0 "   "] [1 "   "] [2 "   "]] ["\  " " \ " "  \\"] 2 " " ; S
[[0 "   "] [1 "   "] [2 "   "]] ["\  " " \ " "  \\"] "  " ; *
[[0 "   "] [1 "   "] [2 "   "]] ["\  " " \ " "  \\"] ["  "] ; a
[[0 "   "] [1 "   "] [2 "   "]] ["\  " " \ " "  \\"] ["  "] 2 ; T
[[0 "   "] [1 "   "] [2 "   "]] ["\  " " \ " "  \\"] ["  "] 2 0 ; U
[[0 "   "] [1 "   "] [2 "   "]] ["\  " " \ " "  \\"] ["  "] 2 ; +
[[0 "   "] [1 "   "] [2 "   "]] ["\  " " \ " "  \\"] ["  " "  "] ; *
[[0 "   "] [1 "   "] [2 "   "]] ["\  " " \ " "  \\"] ["  " "  "] '_ ; '_
[[0 "   "] [1 "   "] [2 "   "]] ["\  " " \ " "  \\"] ["  _" "  _"] ; f+
["\  " " \ " "  \\"] ["  _" "  _"] [[0 "   "] [1 "   "] [2 "   "]] ; @
["\  " " \ " "  \\"] ["  _" "  _"] ["/  " " / " "  /"] ; {~'/t}%
["\  " " \ " "  \\"] ["  _" "  _"] ["  /" " / " "/  "] ; W%
["\  " " \ " "  \\" "  _" "  _" "  /" " / " "/  "] ; ++
["\      /" " \    / " "  \__/  "] ; z
["\      /" " \    / " "  \__/  "] "  " ; 2S*
["  \      /" "   \    / " "    \__/  "] ; f{\+}
["  \      /" "   \    / " "    \__/  "] 2 ; T
["  \      /" "   \    / " "    \__/  "] 2 1 ; 1
["  \      /" "   \    / " "    \__/  "] 2 1 ; :U
["  \      /" "   \    / " "    \__/  "] 3 ; +
["  \      /" "   \    / " "    \__/  "] ["\          /" " \        / " "  \      /  " "   \____/   "] ; K
["\ \      / /" " \ \    / / " "  \ \__/ /  " "   \____/   "] ; ..e>
["\ \      / /" " \ \    / / " "  \ \__/ /  " "   \____/   "] "/\\" ; "/\\"
["\ \      / /" " \ \    / / " "  \ \__/ /  " "   \____/   "] "/\\" '_ ; '_
["\ \      / /" " \ \    / / " "  \ \__/ /  " "   \____/   "] "/\\" '_ 3 ; T
["\ \      / /" " \ \    / / " "  \ \__/ /  " "   \____/   "] "/\\" '_ 9 ; 3*
["\ \      / /" " \ \    / / " "  \ \__/ /  " "   \____/   "] "/\\" '_ 8 ; (
["\ \      / /" " \ \    / / " "  \ \__/ /  " "   \____/   "] "/\\" "________" ; *
["\ \      / /" " \ \    / / " "  \ \__/ /  " "   \____/   "] "/\\" "________" "/\\" ; 1$
["\ \      / /" " \ \    / / " "  \ \__/ /  " "   \____/   "] "/\________/\\" ; ++
["\ \      / /" " \ \    / / " "  \ \__/ /  " "   \____/   "] ["/\________/\\"] ; a
["/\________/\\" "\ \      / /" " \ \    / / " "  \ \__/ /  " "   \____/   "] ; \+
"/\________/\
\ \      / /
 \ \    / / 
  \ \__/ /  
   \____/   " ; N*
; [implicit output]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.