Mọi lập trình viên đều biết rằng ngoặc []{}()<>
là thực sự thú vị. Để làm trầm trọng thêm niềm vui này, các nhóm dấu ngoặc đan xen có thể được chuyển thành sơ đồ dễ thương và mờ.
Giả sử bạn có một chuỗi chứa dấu ngoặc cân bằng, như thế [{][<(]})>(())
. Bước một là xoay chuỗi 45 độ theo chiều kim đồng hồ. (Trong Mathicala, điều này có thể được thực hiện gần như Rotate[ur_string,-pi/4]
). Đây là kết quả của bước đầu tiên:
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Tiếp theo thêm một không gian chéo giữa mỗi nhân vật.
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Tiếp theo, bắt đầu với khung bên trái nhất và vẽ một hình vuông giữa nó và đối tác của nó trong tội phạm.
+---+
| |
| { |
| |
+---+
[
<
(
]
}
)
>
(
(
)
)
Lặp lại quy trình này với mỗi cặp dấu ngoặc, ghi đè các ký tự trước bằng +
s nếu cần.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| [ |
| |
| < |
| |
| ( |
| |
| ] |
| |
+-----------+
)
>
(
(
)
)
Tiếp tục cho đến khi bạn đã làm cho mọi thứ tốt đẹp và vuông.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| +-----+ |
| | | |
| | +---+-+---+
| | | | | |
| | | +-+-+-+ |
| | | | | | | |
| +-+-+-+ | | |
| | | | | |
+-----+-+---+ | |
| | | |
| +-----+ |
| |
+---------+
+-----+
| |
| +-+ |
| | | |
| +-+ |
| |
+-----+
Đầu vào
Đầu vào sẽ là một dòng dấu ngoặc cân bằng và không có ký tự nào khác, với mỗi dấu ngoặc là một []{}()<>
. Mỗi loại khung được cân bằng riêng, mặc dù các loại khác nhau có thể trùng nhau (đây là điều làm cho hình vuông trông thú vị). Một dòng mới theo dõi là tùy chọn.
Đầu ra
Đầu ra sẽ là mẫu hình vuông lồng vào nhau được tạo ra từ chuỗi ngoặc. Không gian lưu trữ và dòng mới theo dõi là tùy chọn, nhưng không được có khoảng trắng hàng đầu.
Mục tiêu
Đây là mã golf, ít byte thắng nhất.
[[]]
chúng ta có thể xuất hai hình vuông chồng lên nhau hay chúng ta phải xuất một hình vuông bên trong hình vuông kia?