Bir dizi parantez alan ve o dizenin tamamen eşleşip eşleşmediğini çıkaran bir program veya işlev yazmalısınız. Programınız bir truthy veya sahtekarlık değeri yazdırmalıdır ve IO herhangi bir yerde olabilir. makul formatta olabilir .
Kurallar ve tanımlar:
Bu zorluğun amacı doğrultusunda, bir "parantez" bu karakterlerden herhangi biri:
()[]{}<>
.Açma ve kapama parantezleri doğru sıradaysa ve içlerinde karakterleri yoksa, bir parantez bir çift parantez olarak kabul edilir.
() []{}
Veya içindeki her alt öğe de eşleşirse.
[()()()()] {<[]>} (()())
Alt öğeler ayrıca birkaç kat derinlikte yuvalanabilir.
[(){<><>[()]}<>()] <[{((()))}]>
Bir dize "Tam olarak eşleşen" olarak kabul edilir ve yalnızca:
Her karakter bir dirsek
Her bir braket çifti, doğru açma ve kapama braketine ve doğru sıraya sahiptir ve
Her braket eşleştirilir.
Girişin yalnızca yazdırılabilir ASCII içereceğini varsayabilirsiniz .
Test IO
İşte bir gerçeğe uygun değer döndürmesi gereken bazı girdiler:
()
[](){}<>
(((())))
({[<>]})
[{()<>()}[]]
[([]{})<{[()<()>]}()>{}]
Ve burada sahte bir değer döndürmesi gereken bazı çıktılar:
( 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.
Her zaman olduğu gibi, bu kod golf, bu yüzden standart boşluklar geçerlidir ve baytlarda en kısa cevap kazanır.
[}
bir maç? Olmazsa, bu kurallar nerede hariç tutulur?
Each pair of brackets has the correct opening and closing bracket and in the right order.