Japt , 46 44 41 40 byte
Uo-U £Y?"\\/"sYv)+" /"pU-Y/2 :"/\\"pU} ·
Cobalah online!
Tanpa penjelasan dan penjelasan
Uo-U mXYZ{Y?"\\/"sYv)+" /"pU-Y/2 :"/\\"pU} qR
Inti dari program ini membuat daftar U * 2item, memetakan masing-masing ke satu baris dari pola, lalu bergabung dengan mereka dengan baris baru:
Uo-U // Build an array of all integers in the range [-U, U).
mXYZ{ // Map each item X and index Y in this array with the following function.
...
} qR // Join the resulting array with newlines.
Adapun pola itu sendiri, inilah cara saya memecahnya:
/\/\/\/\
\/ / / /
/ / / /
\/ / /
/ / /
\/ /
/ /
\/
Seperti yang Anda lihat di sini, ini sekarang berubah menjadi tiga pola sederhana. Yang pertama adalah yang termudah, dihasilkan dengan kode ini:
Y? ... : // If Y, the current index, is 0,
"/\\"pU // return the pattern "/\" repeated U*2 times.
Sekarang untuk bagian kiri. Indeks ganjil harus dipetakan ke \/, dan bahkan ke /, jadi kami menggunakan kode ini:
"\\/"s // Otherwise, slice the pattern "\/" at
Yv) // if Y is even, 1; otherwise, 0.
Ini membuat setengah jalan yang benar lebih mudah; yang perlu kita lakukan adalah mengulangi /beberapa kali:
" /"p // Repeat the pattern " /"
U-Y/2 // floor(U - (Y/2)) times.
Saran diterima!
;.