32 lines
701 B
Plaintext
32 lines
701 B
Plaintext
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;
|