$ include "seed7_05.s7i"; const func string: generateBrackets (in integer: count) is func result var string: stri is ""; local var integer: index is 0; var integer: pos is 0; var char: ch is ' '; begin stri := "[" mult count & "]" mult count; for index range 1 to length(stri) do pos := rand(1, length(stri)); ch := stri[index]; stri @:= [index] stri[pos]; stri @:= [pos] ch; end for; end func; const func boolean: checkBrackets (in string: test) is func result var boolean: okay is TRUE; local var char: ch is ' '; var integer: open is 0; begin for ch range test do if ch = '[' then incr(open); elsif ch = ']' then if open = 0 then okay := FALSE; else decr(open); end if; end if; end for; okay := open = 0; end func; const proc: main is func local var integer: n is 0; var integer: count is 0; var string: stri is ""; begin for n range 0 to 4 do for count range 1 to 3 do stri := generateBrackets(n); writeln(stri <& ": " <& checkBrackets(stri)); end for; end for; end func;