Setiap programmer tahu bahwa tanda kurung []{}()<>
sangat menyenangkan. Untuk memperburuk kesenangan ini, kelompok kurung yang terjalin dapat diubah menjadi diagram yang lucu dan kabur.
Katakanlah Anda memiliki string yang berisi tanda kurung seimbang [{][<(]})>(())
. Langkah pertama adalah memutar string 45 derajat searah jarum jam. (Dalam Mathematica, ini hampir bisa dilakukan dengan Rotate[ur_string,-pi/4]
). Ini adalah hasil dari langkah pertama:
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Selanjutnya tambahkan ruang diagonal antara masing-masing karakter.
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Selanjutnya, mulailah dengan braket paling kiri dan menggambar kotak di antara itu dan mitranya dalam kejahatan.
+---+
| |
| { |
| |
+---+
[
<
(
]
}
)
>
(
(
)
)
Ulangi proses ini dengan setiap pasangan tanda kurung, timpa karakter sebelumnya dengan +
s jika perlu.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| [ |
| |
| < |
| |
| ( |
| |
| ] |
| |
+-----------+
)
>
(
(
)
)
Lanjutkan sampai Anda membuat semuanya menyenangkan dan jujur.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| +-----+ |
| | | |
| | +---+-+---+
| | | | | |
| | | +-+-+-+ |
| | | | | | | |
| +-+-+-+ | | |
| | | | | |
+-----+-+---+ | |
| | | |
| +-----+ |
| |
+---------+
+-----+
| |
| +-+ |
| | | |
| +-+ |
| |
+-----+
Memasukkan
Input akan menjadi satu baris kurung seimbang dan tidak ada karakter lain, dengan masing-masing braket menjadi satu []{}()<>
. Setiap jenis braket seimbang secara individual, meskipun jenis yang berbeda mungkin tumpang tindih (inilah yang membuat kotak terlihat menarik). Baris baru tambahan adalah opsional.
Keluaran
Output akan menjadi pola kuadrat saling yang dihasilkan dari string braket. Trailing space dan trailing newline adalah opsional, tetapi tidak boleh ada spasi putih terdepan.
Tujuan
Ini adalah kode-golf, byte terkecil menang.
sumber
[[]]
dapatkah kita mengeluarkan dua kotak yang tumpang tindih atau kita harus menampilkan satu kotak di dalam yang lain?Jawaban:
JavaScript (ES6),
269 274 278 296261 byteEdit Disimpan 4 byte thx @Neil
UJI
sumber
[...r].map
?[...r].map(c=>c||' ')
,.r.map
karena r adalah array jarang dan peta melewatkan elemen yang hilang. Jadi saya sekarang menggunakan g, yang diisi (dan ada banyak baris sebagai kolom dalam output)r.map
, kataku[...r].map
, dan[...r]
BUKAN array yang jarang, seperti yang Anda sebutkan sendiri di codegolf.stackexchange.com/a/61505 komentar 5.Python 3, 226
Contoh . Penjelasan:
sumber
pb - 449 byte
Saya sangat senang ketika membaca ini karena saya memiliki bahasa yang mencetak langsung ke suatu posisi! Tantangan tentang penentuan posisi keluaran ini harus mudah dan singkat!
Lalu aku ingat pb sudah lama terputus-putus.
Dengan komentar:
sumber
CJam, 117 byte
Coba di sini.
sumber
Ruby, 268
ungolfed dalam program tes
sumber