Sie müssen ein Programm oder eine Funktion schreiben, die eine Reihe von Klammern verwendet und ausgibt, ob diese Zeichenfolge vollständig übereinstimmt oder nicht. Ihr Programm sollte einen echten oder falschen Wert ausgeben , und IO kann in jedem vernünftigen Format vorliegen .
Regeln und Definitionen:
Für die Zwecke dieser Herausforderung ist eine „Klammer“ eines dieser Zeichen:
()[]{}<>
.Ein Klammerpaar wird als "übereinstimmend" betrachtet, wenn die öffnende und schließende Klammer in der richtigen Reihenfolge sind und keine Zeichen enthalten, z
() []{}
Oder wenn jedes Unterelement in ihm auch übereinstimmt.
[()()()()] {<[]>} (()())
Unterelemente können auch mehrere Ebenen tief verschachtelt sein.
[(){<><>[()]}<>()] <[{((()))}]>
Eine Zeichenfolge wird genau dann als "vollständig zugeordnet" betrachtet, wenn:
Jedes einzelne Zeichen ist eine Klammer,
Jedes Paar von Klammern hat die richtige öffnende und schließende Klammer in der richtigen Reihenfolge und
Jede Klammer ist abgestimmt.
Sie können davon ausgehen, dass die Eingabe nur druckbares ASCII enthält .
Testen Sie IO
Hier sind einige Eingaben, die einen Wahrheitswert zurückgeben sollten:
()
[](){}<>
(((())))
({[<>]})
[{()<>()}[]]
[([]{})<{[()<()>]}()>{}]
Und hier sind einige Ausgaben, die einen falschen Wert zurückgeben sollten:
( 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.
Wie üblich ist dies Codegolf, daher gelten Standardlücken und die kürzeste Antwort in Bytes gewinnt.
[}
eine Übereinstimmung? Und wenn nicht, wo wird es durch diese Regeln ausgeschlossen?
Each pair of brackets has the correct opening and closing bracket and in the right order.