大括弧のストリングを取り、そのストリングが完全に一致するかどうかを出力するプログラムまたは関数を作成する必要があります。プログラムは真実または偽の値を出力する必要があり、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.