Musisz napisać program lub funkcję, która pobiera ciąg nawiasów i wyświetla dane wyjściowe, niezależnie od tego, czy ten ciąg jest w pełni dopasowany. Twój program powinien wydrukować wartość prawdy lub fałszu , a IO może mieć dowolny rozsądny format .
Reguły i definicje:
Dla celów niniejszego wyzwanie, „uchwyt” jest każdy z tych znaków:
()[]{}<>
.Para nawiasów jest uważana za „dopasowaną”, jeśli nawiasy otwierające i zamykające są w odpowiedniej kolejności i nie zawierają w sobie znaków, takich jak
() []{}
Lub jeśli każdy podelement w nim również jest dopasowany.
[()()()()] {<[]>} (()())
Elementy podrzędne mogą być również zagnieżdżone na kilku warstwach.
[(){<><>[()]}<>()] <[{((()))}]>
Ciąg jest uważany za „w pełni dopasowany”, tylko wtedy, gdy:
Każda postać to nawias,
Każda para wsporników ma prawidłowy wspornik otwierania i zamykania we właściwej kolejności, oraz
Każdy wspornik jest dopasowany.
Możesz założyć, że dane wejściowe będą zawierały tylko ASCII do wydruku .
Przetestuj IO
Oto niektóre dane wejściowe, które powinny zwrócić prawdziwą wartość:
()
[](){}<>
(((())))
({[<>]})
[{()<>()}[]]
[([]{})<{[()<()>]}()>{}]
A oto kilka wyników, które powinny zwrócić wartość falsy:
( 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.
Jak zwykle jest to gra w golfa, więc obowiązują standardowe luki i wygrywa najkrótsza odpowiedź w bajtach.
[}
pasuje? A jeśli nie, to gdzie jest wykluczone przez te zasady?
Each pair of brackets has the correct opening and closing bracket and in the right order.