คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นที่รับสตริงของวงเล็บปีกกาและเอาท์พุทว่าสตริงนั้นตรงกันหรือไม่ โปรแกรมของคุณควรพิมพ์truthy หรือ falsyคุ้มค่าและ IO สามารถในรูปแบบที่เหมาะสม
กฎและคำจำกัดความ:
สำหรับวัตถุประสงค์ของการท้าทายนี้เป็น "วงเล็บ" ใด ๆ
()[]{}<>
ของตัวละครเหล่านี้:เครื่องหมายวงเล็บคู่หนึ่งถือว่าเป็น "จับคู่" หากวงเล็บเปิดและปิดอยู่ในลำดับที่ถูกต้องและไม่มีอักขระอยู่ภายในเช่น
() []{}
หรือถ้าทุกองค์ประกอบย่อยภายในนั้นตรงกัน
[()()()()] {<[]>} (()())
องค์ประกอบย่อยยังสามารถซ้อนกันหลายชั้นลึก
[(){<><>[()]}<>()] <[{((()))}]>
สตริงถือเป็น "จับคู่อย่างสมบูรณ์" ถ้าหาก:
ตัวละครทุกตัวจะเป็นตัวยึด
วงเล็บแต่ละคู่มีวงเล็บเปิดและปิดที่ถูกต้องและในลำดับที่ถูกต้องและ
วงเล็บแต่ละอันถูกจับคู่
คุณอาจสันนิษฐานว่าอินพุตจะมีASCII ที่พิมพ์ได้เท่านั้น
ทดสอบ IO
นี่คืออินพุตบางส่วนที่ควรคืนค่าความจริง:
()
[](){}<>
(((())))
({[<>]})
[{()<>()}[]]
[([]{})<{[()<()>]}()>{}]
และนี่คือผลลัพธ์ที่ควรคืนค่าที่เป็นเท็จ:
( Has no closing ')'
}{ Wrong order
(<)> Each pair contains only half of a matched element
(()()foobar) Contains invalid characters
[({}<>)> The last bracket should be ']' instead of '>'
(((())) Has 4 opening brackets, but only 3 closing brackets.
ตามปกตินี่คือ code-golf ดังนั้นช่องโหว่มาตรฐานจะมีผลบังคับใช้และคำตอบที่สั้นที่สุดในหน่วยไบต์จะชนะ
[}
การแข่งขัน? และถ้าไม่มันจะถูกยกเว้นโดยกฎเหล่านี้ที่ไหน?
Each pair of brackets has the correct opening and closing bracket and in the right order.