Tulis kode terpendek yang diukur dengan jumlah byte untuk menghasilkan kisi ASCII yang terdiri dari rhombi, dengan parameter berikut:
- m - jumlah rhombi lengkap dalam satu baris
- n - jumlah baris
- s - sisi belah ketupat terkecil
- r - level bersarang - berapa banyak rhombi yang ada di dalam "pangkalan" (yang merupakan fonud di antara persimpangan kisi)
Contohnya
1. Input: 5 3 1 0
Output:
/\/\/\/\/\
\/\/\/\/\/
/\/\/\/\/\
\/\/\/\/\/
/\/\/\/\/\
\/\/\/\/\/
A 5x3 grid of rhombi with side 1, no nesting
2. Input: 3 2 2 0
Output:
/\ /\ /\
/ \/ \/ \
\ /\ /\ /
\/ \/ \/
/\ /\ /\
/ \/ \/ \
\ /\ /\ /
\/ \/ \/
A 3x2 grid of rhombi with side 2, no nesting
3. Input: 5 2 1 2
Output:
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
A 5x2 grid of rhombi with side 1 (the smallest rhombus), level of nesting is 2
4. Input: 4 2 2 1
Output:
//\\ //\\ //\\ //\\
///\\\///\\\///\\\///\\\
// \\// \\// \\// \\
\\ //\\ //\\ //\\ //
\\\///\\\///\\\///\\\///
\\// \\// \\// \\//
//\\ //\\ //\\ //\\
///\\\///\\\///\\\///\\\
// \\// \\// \\// \\
\\ //\\ //\\ //\\ //
\\\///\\\///\\\///\\\///
\\// \\// \\// \\//
A 4x2 grid of rhombi with side 2 with level of nesting 1
5. Input: 4 2 3 3
Output:
////\\\\ ////\\\\ ////\\\\ ////\\\\
/////\\\\\ /////\\\\\ /////\\\\\ /////\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
///// \\\\\///// \\\\\///// \\\\\///// \\\\\
//// \\\\//// \\\\//// \\\\//// \\\\
\\\\ ////\\\\ ////\\\\ ////\\\\ ////
\\\\\ /////\\\\\ /////\\\\\ /////\\\\\ /////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
\\\\\///// \\\\\///// \\\\\///// \\\\\/////
\\\\//// \\\\//// \\\\//// \\\\////
////\\\\ ////\\\\ ////\\\\ ////\\\\
/////\\\\\ /////\\\\\ /////\\\\\ /////\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
///// \\\\\///// \\\\\///// \\\\\///// \\\\\
//// \\\\//// \\\\//// \\\\//// \\\\
\\\\ ////\\\\ ////\\\\ ////\\\\ ////
\\\\\ /////\\\\\ /////\\\\\ /////\\\\\ /////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
\\\\\///// \\\\\///// \\\\\///// \\\\\/////
\\\\//// \\\\//// \\\\//// \\\\////
A 4x2 grid of rhombi with side 3, level of nesting 3
Pastikan untuk menampilkan rhombi yang terlihat sebagian di tepi dan sudut jika perlu.
Jawaban:
SOGL V0.12 , 20 byte
Coba Di Sini! Mengambil input dalam urutan terbalik dari apa yang ada dalam contoh - r, s, n, m.
Penjelasan:
sumber
∙*
...Arang ,
483937 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Gambarlah ukuran persegi
r + 1
. Ini adalah seperempat dari berlian bersarang ukuran 1.Salin kuadrat 1 kuadrat kanan dan bawah
s - 1
untuk mendapatkan ukuran yang tepat.Memantulkannya menjadi berlian bersarang penuh.
Hitung ukuran berlian bersarang ini.
Salin berlian ke waktu yang tepat
m - 1
.Salin berlian ke bawah
n - 1
kali.sumber
Python 2 ,
160159158 byte-1 byte terima kasih kepada Jonathan Frech
Cobalah online!
Ini menggunakan fakta bahwa bagian bawah belah ketupat adalah bagian atas terbalik (
[::-1]
), berulangrange(n*2)
dan digunakan~x%2*2-1
untuk mengontrol apakah itu bagian atas atau bawah.Untuk bagian atas (dan bagian bawah) sisi kanan hanya sisi kiri terbalik dan diganti
/
dengan\
->l.replace(*'/\\')..[::-1]
Untuk menghasilkan pola / bersarang
~-s*' '+'/'*(1+r*2)+~-s*' '
digunakan untuk membuat string seperti///
itu akan diiterasi dan dicincang:sumber
(1+r*2)
bisa(r-~r)
.Julia 0,6 , 190 byte
Ini adalah solusi fungsional yang menghitung untuk setiap pasangan indeks
i,j
apa simbol harus ditampilkan.Cobalah online!
Ilustrasi
Mulai dengan kotak
r > 0
berarti garis yang lebih tebalTangani sudut dengan memeriksa garis mana pada grid asli yang paling dekat
Seorang peri memberi tahu kami untuk menghapus setiap
s-1
barisMelintasi secara diagonal dan selesai
sumber
JavaScript (ES6), 154 byte
Langsung menghitung karakter di setiap sel output.
sumber
CJam, 44
Cobalah online
Penjelasan:
sumber
C # (.NET Core) , 167 byte
Cobalah online!
Saya terkejut dengan ukuran yang saya kelola; Saya awalnya mengharapkan solusi yang lebih lama. Dalam mengatakan ini, saya yakin ada trik lain yang saya lewatkan.
DeGolfed
sumber
Python 2 ,
201189 byteCobalah online!
Menggunakan fakta bahwa bagian bawah sama dengan bagian atas, tetapi bergeser:
Disimpan 22 byte berkat Jonathan Frech
sumber
s-i-1
bisas+~i
, menghemat dua byte.r+1+min(...
bisar-~min(...
, menyimpan yang lain.L=[(...)*m for
bisaL=[m*(...)for
, menghemat satu byte lagi.L+=[...];print'\n'.join(L*n)
dapatprint'\n'.join((L+[...])*n)
menyimpan byte lain, menghasilkan 196 byte .s+r-i-1
dengans+~i+r
.exec
dan pemformatan string.Perl 5, 159 + 3 (-anl) byte
Cobalah secara Online
sumber