procedure main(arglist) every s := genbs(!arglist) do write(image(s), if isbalanced(s) then " is balanced." else " is unbalanced") end procedure isbalanced(s) # test if a string is balanced re: [] return (s || " ") ? (bal(,'[',']') = *s+1) end procedure genbs(i) # generate strings of i pairs of [] s := "" every 1 to i do s ||:= "[]" # generate i pairs every !s := ?s # shuffle return s end