|
sub generate {
|
|
my $n = shift;
|
|
my $str = '[' x $n;
|
|
substr($str, rand($n + $_), 0) = ']' for 1..$n;
|
|
return $str;
|
|
}
|
|
|
|
sub balanced {
|
|
shift =~ /^ (\[ (?1)* \])* $/x;
|
|
}
|
|
|
|
for (0..8) {
|
|
my $input = generate($_);
|
|
print balanced($input) ? " ok:" : "bad:", " '$input'\n";
|
|
}
|