let chars s =
let rec aux acc i =
if i < 0 then acc else aux (s.[i] :: acc) (i - 1)
in aux
[] ((String.length s
) - 1) let f s =
let rec aux = function
([], []) -> 1
| (_, []) -> 0
| ('['::bs, ']'::cs) -> aux (bs, cs)
| (bs, c::cs) -> aux (c::bs, cs)
in aux ([], (chars s))
let g s =
Printf.printf
"%d\t%s\n" (f s
) s
let () =
g "";
g "[";
g "]";
g "[]";
g "[[]]";
g "[][]";
g "][";
bGV0IGNoYXJzIHMgPSAKCWxldCByZWMgYXV4IGFjYyBpID0gCgkJaWYgaSA8IDAgdGhlbiBhY2MgZWxzZSBhdXggKHMuW2ldIDo6IGFjYykgKGkgLSAxKQoJaW4gYXV4IFtdICgoU3RyaW5nLmxlbmd0aCBzKSAtIDEpCmxldCBmIHMgPSAKCWxldCByZWMgYXV4ID0gZnVuY3Rpb24KCQkoW10sIFtdKSAtPiAxCgkJfCAoXywgW10pIC0+IDAKCQl8ICgnWyc6OmJzLCAnXSc6OmNzKSAtPiBhdXggKGJzLCBjcykKCQl8IChicywgYzo6Y3MpIC0+IGF1eCAoYzo6YnMsIGNzKQoJaW4gYXV4IChbXSwgKGNoYXJzIHMpKQpsZXQgZyBzID0gCglQcmludGYucHJpbnRmICIlZFx0JXNcbiIgKGYgcykgcwpsZXQgKCkgPSAKCWcgIiI7CglnICJbIjsKCWcgIl0iOwoJZyAiW10iOwoJZyAiW1tdXSI7CglnICJbXVtdIjsKCWcgIl1bIjs=