È necessario scrivere un programma o una funzione che accetta una stringa di parentesi e genera se la stringa è completamente abbinata. Il programma dovrebbe stampare un valore di verità o falsa e IO può essere in qualsiasi formato ragionevole .
Regole e definizioni:
Ai fini di questa sfida, una "staffa" è uno di questi personaggi:
()[]{}<>
.Una coppia di parentesi è considerata "abbinata" se le parentesi aperta e chiusa sono nell'ordine giusto e non hanno caratteri al loro interno, come
() []{}
O se anche ogni sottoelemento al suo interno è abbinato.
[()()()()] {<[]>} (()())
I sottoelementi possono anche essere nidificati a più livelli di profondità.
[(){<><>[()]}<>()] <[{((()))}]>
Una stringa è considerata "Completamente abbinata" se e solo se:
Ogni singolo personaggio è una parentesi,
Ogni coppia di staffe ha la staffa di apertura e chiusura corretta e nel giusto ordine, e
Ogni parentesi è abbinata.
Si può presumere che l'input conterrà solo ASCII stampabile .
Test IO
Ecco alcuni input che dovrebbero restituire un valore di verità:
()
[](){}<>
(((())))
({[<>]})
[{()<>()}[]]
[([]{})<{[()<()>]}()>{}]
E qui ci sono alcuni output che dovrebbero restituire un valore falso:
( 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.
Come al solito, si tratta di code-golf, quindi si applicano scappatoie standard e vince la risposta più breve in byte.
[}
una partita? E se no, dove è escluso da queste regole?
Each pair of brackets has the correct opening and closing bracket and in the right order.