RosettaCodeData/Task/Balanced-brackets/Factor/balanced-brackets-1.factor

21 lines
527 B
Factor

USING: combinators formatting kernel math random sequences strings ;
IN: rosetta-code.balanced-brackets
: balanced? ( str -- ? )
0 swap [
{
{ CHAR: [ [ 1 + t ] }
{ CHAR: ] [ 1 - dup 0 >= ] }
[ drop t ]
} case
] all? swap zero? and ;
: bracket-pairs ( n -- str )
[ "[]" ] replicate "" concat-as ;
: balanced-brackets-main ( -- )
5 bracket-pairs randomize dup balanced? "" "not " ?
"String \"%s\" is %sbalanced.\n" printf ;
MAIN: balanced-brackets-main