5 April adalah Hari Pizza Deep DIsh Nasional, tema tantangan ini. Diberi bilangan bulat positif n
( n
lebih besar dari 0), buat pizza hidangan ASCII. Pizza deep dish yang sebenarnya ditampilkan:
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 n
tinggi dan n*3
panjang. Panjang adalah jumlah karakter (termasuk spasi) di baris tertinggi. Jadi diberikan n
1, lapisan pertama akan terlihat seperti ini:
\_/ 1 character tall
3 characters long
Jika n
dua:
\ / 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+2
karakter tinggi dan (n*3)+6)
karakter panjang. Diberikan n
satu:
\ / 3 characters tall
\ /
\___/
9 characters long (3 underscores, 3 slashes on either side)
Jika n
dua:
\ / 4 characters high
\ /
\ /
\____/
12 characters long
Anda kemudian akan mencocokkan dua pasang tertinggi satu \/
sama lain untuk lapisan dalam dan luar. In n
is 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)+2
panjang untuk menyelesaikan kerak dan pizza.
Contohnya
Jika n
1:
/\_____/\
\ \ / /
\ \_/ /
\___/
n
adalah 2:
/\________/\
\ \ / /
\ \ / /
\ \__/ /
\____/
n
adalah 3:
/\___________/\
\ \ / /
\ \ / /
\ \ / /
\ \___/ /
\_____/
Kriteria Kemenangan
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
-
bukan_
?Jawaban:
Arang , 35 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Masukkan ukuran pizza.
Cetak bagian dari dasar kerak luar.
Cetak sisi kiri kerak luar.
Cetak bagian kerak atas.
Cetak sisi kiri kerak dalam.
Cetak bagian dari dasar kerak dalam.
Renungkan untuk menyelesaikan pizza.
Perhatikan bahwa penambahan modern ke Charcoal menyusut ukurannya menjadi 31 byte:
Cobalah online! Tautan adalah untuk mengucapkan versi kode.
sumber
JavaScript (ES6), 136 byte
Seluruh pizza sangat berulang sehingga
r
fungsinya (dirancang sebagai templat templat yang ditandai) mengulangi karakter pertaman
kali 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.sumber
Python 2,
153151 byteCobalah online
-2 byte dengan mensubstitusi nilai berulang dengan variabel berkat @KoishoreRoy
sumber
print' '*=~n+'\\'+'_'*-~n+'_/'
kamu tidak bisa menulisprint' '*i+' \\_'+'_'*n+'_/'
? (Ataun
alih-alihi
, tetapi saya menyalin baris sebelumnya.)-~n
kei
, karena pada titik inii==n
. Tapi perubahan kedua itu baik. Saya juga menyingkat-~n
, terima kasih atas ide Anda-~n
kei
, karena saya menambahkan ruang. (Tetapi Anda tampaknya telah menyelesaikannya sendiri. Juga saya sudah mencatatnyan
dani
sama pada saat ini.)MATLAB, 333 byte
(Upaya Malas-ish)
Diformat:
Ide dasarnya adalah saya memiliki pegangan fungsi untuk mencetak semuanya, dan kemudian saya cukup kasar. Satu untuk loop adalah untuk
n
lapisan antara bagian paling atas dan bagian bawah lapisan dalam. Pengulangan(spasi) dan
_
dilakukan menggunakanarrayfun
, dengan input array. Akan mencoba memikirkan cara yang lebih menarik untuk melakukan ini jika saya mendapatkan lebih banyak waktu nanti.sumber
Arang ,
5452 bytePenjelasan:
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!
sumber
PHP,
209 200 137135 byteakhirnya mengalahkan JS :)
Mengambil input dari STDIN; dijalankan dengan
-nR
atau memesan pizza keluarga .kerusakan
sumber
JavaScript (ES6), 205 byte
Ini adalah postingan ascii-art pertamaku !
Tambahkan a
f=
di awal dan aktifkan likef(arg)
.Catatan: Semua jeda baris diperlukan!
Penjelasan
Kode pertama menyatakan Array
a
. Ini kemudian mendeklarasikanw
danu
memiliki 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, denganfor
loop dan aTemplate Literal
, bagian tengah pizza dibuat (dengan setiap lapisan memilikii
spasi putih di awal dan(n+1-i*2)+n+(n-1)
spasi putih di antara\ \
dan/ /
, di manai
merupakan indeksfor
loop). 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!
sumber
Batch, 200 byte
t
berisi indentasi kiri sementaras
berisi bagian dalam; -nya_
s subsituted dengan spasi pada baris tengah.l
hanya ada untuk menghindari pengulangan.sumber
V , 57 byte
Cobalah online!
Karena, (seperti biasa) ini mengandung banyak karakter dan unsintable non-ASCII yang jahat, berikut adalah hexdump:
Saya akan segera mengirim penjelasan yang lebih terperinci, tetapi berikut ini adalah ikhtisar tingkat tinggi:
sumber
C (dentang) ,
211215 byteCobalah online!
Kode Cantik:
Suntingan:
sumber
CJam, 74 Bytes
Cara terlalu lama. Saya akan mencoba pendekatan lain.
Membangun string baris demi baris. Tidak ada yang terlalu gila.
sumber
CJam, 89 byte
Nah, ini sebenarnya lebih lama dari solusi saya yang lain saat ini, tapi saya pikir ini lebih golf:
Jejak tumpukan:
sumber