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.
[[]]
dapatkah kita mengeluarkan dua kotak yang tumpang tindih atau kita harus menampilkan satu kotak di dalam yang lain?