Pizza, Pizza, Pizza Hidangan Dalam!

11

5 April adalah Hari Pizza Deep DIsh Nasional, tema tantangan ini. Diberi bilangan bulat positif n( nlebih besar dari 0), buat pizza hidangan ASCII. Pizza deep dish yang sebenarnya ditampilkan:

Sebuah pizza!

Seperti yang Anda lihat, ada lapisan kerak di bagian bawah dan mengelilingi sisa pizza.

Cara membuat pizza

Kerak terbuat dari dua lapisan. Lapisan pertama akan ntinggi dan n*3panjang. Panjang adalah jumlah karakter (termasuk spasi) di baris tertinggi. Jadi diberikan n1, lapisan pertama akan terlihat seperti ini:

\_/  1 character tall
 3 characters long

Jika ndua:

\    /   2 characters tall
 \__/
  6 characters long

Sekarang untuk lapisan kedua kerak bumi. Ini akan pergi keluar pertama, kerak dalam jadi karena itu, itu akan menjadi n+2karakter tinggi dan (n*3)+6)karakter panjang. Diberikan nsatu:

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

Jika ndua:

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

Anda kemudian akan mencocokkan dua pasang tertinggi satu \/sama lain untuk lapisan dalam dan luar. In nis 1:

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

Jika dilakukan dengan benar, itu akan terlihat seperti V tanpa atasan dengan perbedaan satu karakter antara setiap lapisan. Berbicara tentang puncak, kerak akan bergabung bersama oleh sepasang /\, dipisahkan oleh garis garis bawah yang (n*3)+2panjang untuk menyelesaikan kerak dan pizza.

Contohnya

Jika n1:

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

n adalah 2:

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

n adalah 3:

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

Kriteria Kemenangan

Ini adalah , jadi kode terpendek dalam byte menang!

Anthony Pham
sumber
1
Sesuatu terlihat dalam contoh kerak dalam. Yang untuk n = 1 tampaknya kecil, yang untuk n = 2 terlihat seperti lapisan dalam dari contoh terakhir n = 1, dll ...
Adám
Bisakah kita menggunakan yang -bukan _?
Okx
@Okx Tidak, Anda tidak boleh
Anthony Pham
Selamat Hari Pizza Piring Deep!
Arjun

Jawaban:

2

Arang , 35 byte

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

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

Nθ

Masukkan ukuran pizza.

←_←×_θ

Cetak bagian dari dasar kerak luar.

↖θ↖²

Cetak sisi kiri kerak luar.

M→/P×_⁺²×²θ

Cetak bagian kerak atas.

↘θ↘¹\

Cetak sisi kiri kerak dalam.

×_θ

Cetak bagian dari dasar kerak dalam.

‖BOθ

Renungkan untuk menyelesaikan pizza.

Perhatikan bahwa penambahan modern ke Charcoal menyusut ukurannya menjadi 31 byte:

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

Cobalah online! Tautan adalah untuk mengucapkan versi kode.

Neil
sumber
Tidak yakin apakah saya secara tidak sengaja memperkenalkan bug, tetapi pengisian tampaknya tidak berfungsi dengan baik?
ASCII
@ Mengisi ASCII saja? Kasing uji setidaknya terlihat tepat untuk saya; Menurutmu apa yang tidak berhasil?
Neil
Saya pikir itu tidak bekerja dengan input 4 ke atas?
ASCII
@ ASCII-satunya Huh, bagaimana saya mengabaikan itu ...
Neil
5

JavaScript (ES6), 136 byte

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>

Seluruh pizza sangat berulang sehingga rfungsinya (dirancang sebagai templat templat yang ditandai) mengulangi karakter pertama nkali inputnya . Ini menangani dua baris atas dan bawah pizza. Bagian tengah diulang dengan mengganti string kosong; yang $`dan $'subsitutions otomatis sesuai dengan peningkatan dan penurunan jumlah kosong sehingga positioning \ \dan / /tepat.

Neil
sumber
2

Python 2, 153 151 byte

Cobalah online

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 byte dengan mensubstitusi nilai berulang dengan variabel berkat @KoishoreRoy

Possum Mati
sumber
1
Bukannya print' '*=~n+'\\'+'_'*-~n+'_/'kamu tidak bisa menulis print' '*i+' \\_'+'_'*n+'_/'? (Atau nalih-alih i, tetapi saya menyalin baris sebelumnya.)
Neil
@ Neil Saya tidak dapat mengubah -~nke i, karena pada titik ini i==n. Tapi perubahan kedua itu baik. Saya juga menyingkat -~n, terima kasih atas ide Anda
Dead Possum
Saya tidak hanya mengubah -~nke i, karena saya menambahkan ruang. (Tetapi Anda tampaknya telah menyelesaikannya sendiri. Juga saya sudah mencatatnya ndan isama pada saat ini.)
Neil
2

MATLAB, 333 byte

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

Diformat:

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

Ide dasarnya adalah saya memiliki pegangan fungsi untuk mencetak semuanya, dan kemudian saya cukup kasar. Satu untuk loop adalah untuk nlapisan antara bagian paling atas dan bagian bawah lapisan dalam. Pengulangan (spasi) dan _dilakukan menggunakan arrayfun, dengan input array. Akan mencoba memikirkan cara yang lebih menarik untuk melakukan ini jika saya mendapatkan lebih banyak waktu nanti.

Krostd
sumber
Cobalah online! (dalam Oktaf)
Luis Mendo
2

Arang , 54 52 byte

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

Penjelasan:

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

Jawaban saya sebelumnya adalah di Retina, bahasa yang belum saya posting jawaban sebelumnya. Sekarang, Anda memiliki jawaban di Charcoal, yang belum saya posting jawaban sebelumnya.

Cobalah online!

Okx
sumber
2

PHP, 209 200 137 135 byte

akhirnya mengalahkan JS :)

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

Mengambil input dari STDIN; dijalankan dengan -nRatau memesan pizza keluarga .

kerusakan

// 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,_),"/";
Titus
sumber
2

JavaScript (ES6), 205 byte


Ini adalah postingan pertamaku !

Tambahkan a f=di awal dan aktifkan like 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``}

Catatan: Semua jeda baris diperlukan!


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


Penjelasan

Kode pertama menyatakan Array a. Ini kemudian mendeklarasikan wdan umemiliki nilai spasi putih dan garis bawah masing-masing. Kemudian, ia mendeklarasikan variabel String untuk menyimpan nilai kerak (yang dapat dihitung oleh /\+(n*3+2 underscores)+/\, seperti yang disebutkan dalam Tantangan). Setelah itu, dengan forloop dan a Template Literal, bagian tengah pizza dibuat (dengan setiap lapisan memiliki ispasi putih di awal dan (n+1-i*2)+n+(n-1)spasi putih di antara \ \dan / /, di mana imerupakan indeks forloop). Terakhir, bagian paling bawah dari pizza dibuat ( (i whitespaces)+\+(n+2 underscores)+/). Semua bagian disatukan dan di-output (ted).


Jika karena alasan tertentu cuplikan tidak menampilkan seni ASCII dengan benar, lihat di sini .

Selamat Hari Pizza Deep Deep Dish untuk semua orang!


Arjun
sumber
1

Batch, 200 byte

@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%_/

tberisi indentasi kiri sementara sberisi bagian dalam; -nya _s subsituted dengan spasi pada baris tengah. lhanya ada untuk menghindari pengulangan.

Neil
sumber
0

V , 57 byte

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

Cobalah online!

Karena, (seperti biasa) ini mengandung banyak karakter dan unsintable non-ASCII yang jahat, berikut adalah 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.

Saya akan segera mengirim penjelasan yang lebih terperinci, tetapi berikut ini adalah ikhtisar tingkat tinggi:

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
James
sumber
0

C (dentang) , 211 215 byte

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

Cobalah online!

Kode Cantik:

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

Suntingan:

  • dihapus s [l] dan dikaitkan dengan beralih dari%. s notasi ke% .s
  • menambahkan pembungkus fungsi untuk kepatuhan & coba online
Ian M.
sumber
197 byte
ceilingcat
0

CJam, 74 Bytes

Cara terlalu lama. Saya akan mencoba pendekatan lain.

"/\\"ri:M3*:A2+'_*1$NL{"\ \\"AS*"/ /"3$S+A((:A;N\}M*4$A'_*4$N4$S'\A2+'_*'/

Membangun string baris demi baris. Tidak ada yang terlalu gila.

Buah Esolanging
sumber
0

CJam, 89 byte

Nah, ini sebenarnya lebih lama dari solusi saya yang lain saat ini, tapi saya pikir ini lebih golf:

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

Jejak tumpukan:

"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]
Buah Esolanging
sumber