Ви повинні написати програму або функцію, яка займає рядок дужок і видає, повністю відповідає ці рядки. Ваша програма повинна надрукувати правдиве або хибне значення, а 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.
Як завжди, це код-гольф, тому застосовуються стандартні лазівки, і найкоротша відповідь у байтах виграє.
[}
є сірник? А якщо ні, то де це виключено цими правилами?
Each pair of brackets has the correct opening and closing bracket and in the right order.