RosettaCodeData/Task/Balanced-brackets/Maxima/balanced-brackets.maxima

32 lines
388 B
Plaintext

brack(s) := block(
[n: slength(s), r: 0, c],
catch(
for i thru n do (
if cequal(c: charat(s, i), "]") then (if (r: r - 1) < 0 then throw(false))
elseif cequal(c, "[") then r: r + 1
),
is(r = 0)
)
)$
brack("");
true
brack("[");
false
brack("]");
false
brack("[]");
true
brack("][");
false
brack("[[][]]");
true
brack("[[[]][]]]");
false