โปรแกรมเมอร์ทุกคนรู้ว่าวงเล็บ[]{}()<>
สนุกมาก เพื่อทำให้ความสนุกทวีความรุนแรงมากขึ้นกลุ่มของวงเล็บสานแบบสานสามารถเปลี่ยนเป็นไดอะแกรมน่ารักและคลุมเครือ
[{][<(]})>(())
สมมติว่าคุณมีสตริงที่มีวงเล็บสมดุลเช่น ขั้นตอนที่หนึ่งคือการหมุนสตริง 45 องศาตามเข็มนาฬิกา (ใน Mathematica สามารถทำได้เกือบRotate[ur_string,-pi/4]
) นี่คือผลลัพธ์ของขั้นตอนแรก:
[
{
]
[
<
(
]
}
)
>
(
(
)
)
ถัดไปเพิ่มช่องว่างในแนวทแยงระหว่างตัวละครแต่ละตัว
[
{
]
[
<
(
]
}
)
>
(
(
)
)
จากนั้นเริ่มต้นด้วยวงเล็บปีกกาซ้ายสุดและวาดสี่เหลี่ยมระหว่างมันและคู่ของมันในอาชญากรรม
+---+
| |
| { |
| |
+---+
[
<
(
]
}
)
>
(
(
)
)
ทำซ้ำขั้นตอนนี้กับวงเล็บแต่ละคู่โดยเขียนทับอักขระก่อนหน้าด้วย+
s ถ้าจำเป็น
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| [ |
| |
| < |
| |
| ( |
| |
| ] |
| |
+-----------+
)
>
(
(
)
)
ทำต่อไปจนกว่าคุณจะทำทุกอย่างให้ดีและเป็นรูปสี่เหลี่ยมจัตุรัส
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| +-----+ |
| | | |
| | +---+-+---+
| | | | | |
| | | +-+-+-+ |
| | | | | | | |
| +-+-+-+ | | |
| | | | | |
+-----+-+---+ | |
| | | |
| +-----+ |
| |
+---------+
+-----+
| |
| +-+ |
| | | |
| +-+ |
| |
+-----+
อินพุต
อินพุตจะเป็นบรรทัดเดียวของวงเล็บเหลี่ยมที่สมดุลและไม่มีอักขระอื่นโดยแต่ละวงเล็บจะเป็นหนึ่งใน[]{}()<>
นั้น วงเล็บแต่ละประเภทมีความสมดุลเป็นรายบุคคลถึงแม้ว่าประเภทที่แตกต่างกันอาจทับซ้อนกัน (นี่คือสิ่งที่ทำให้สี่เหลี่ยมดูน่าสนใจ) ขึ้นบรรทัดใหม่ต่อท้ายเป็นตัวเลือก
เอาท์พุต
เอาต์พุตจะเป็นรูปแบบสแควร์ที่เชื่อมต่อกันที่สร้างจากสตริงวงเล็บเหลี่ยม ช่องว่างต่อท้ายและขึ้นบรรทัดใหม่เป็นทางเลือก แต่จะต้องไม่มีช่องว่างนำหน้า
เป้าหมาย
นี่คือโค้ดกอล์ฟซึ่งมีจำนวนน้อยที่สุดที่ชนะ
[[]]
เราจะเอาท์พุทสแควร์สสองตัวที่ทับซ้อนกันหรือว่าเราต้องเอาท์พุทหนึ่งสแควร์ภายในอีกอันหนึ่งได้ไหม?