program balanced_brackets; setrandom(0); loop for length in [1..10] do s := generate length; print(balanced s, s); end loop; op generate(n); s := "["*n + "]"*n; loop for i in [n*2, n*2-1..2] do j := 1 + random(i - 1); [s(i), s(j)] := [s(j), s(i)]; end loop; return s; end op; op balanced(s); depth := 0; loop for c in s do case c of ("["): depth +:= 1; ("]"): depth -:= 1; if depth<0 then return false; end if; end case; end loop; return depth = 0; end op; end program;