54 lines
1.2 KiB
Plaintext
54 lines
1.2 KiB
Plaintext
$ 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;
|