Balanced brackets: Difference between revisions
Content added Content deleted
m (→State machine with counter: not really a state machine) |
(→{{header|REXX}}: added the REXX language. ~~~~) |
||
Line 2,182: | Line 2,182: | ||
9 TRUE [[[[][[][]]]]] |
9 TRUE [[[[][[][]]]]] |
||
10 TRUE []</lang> |
10 TRUE []</lang> |
||
=={{header|REXX}}== |
|||
<lang rexx> |
|||
/*check for balanced brackets [] */ |
|||
@.=0 |
|||
yesno.0=left('',40) 'unbalanced' |
|||
yesno.1='balanced' |
|||
q='[][][][[]]' ; call checkBal q; say yesno.result q |
|||
q='[][][][[]]][' ; call checkBal q; say yesno.result q |
|||
q='[' ; call checkBal q; say yesno.result q |
|||
q=']' ; call checkBal q; say yesno.result q |
|||
q='[]' ; call checkBal q; say yesno.result q |
|||
q='][' ; call checkBal q; say yesno.result q |
|||
q='][][' ; call checkBal q; say yesno.result q |
|||
q='[[]]' ; call checkBal q; say yesno.result q |
|||
q='[[[[[[[]]]]]]]' ; call checkBal q; say yesno.result q |
|||
q='[[[[[]]]][]' ; call checkBal q; say yesno.result q |
|||
q='[][]' ; call checkBal q; say yesno.result q |
|||
q='[]][[]' ; call checkBal q; say yesno.result q |
|||
q=']]][[[[]' ; call checkBal q; say yesno.result q |
|||
do j=1 for 40 |
|||
q=translate(rand(random(1,8)),'[]',01) |
|||
call checkBal q; if result=-1 then iterate |
|||
say yesno.result q |
|||
end |
|||
exit |
|||
pand:p=random(0,1);return p||\p |
|||
rand:pp=pand();pp=pand()pp;pp=copies(pp,arg(1)); |
|||
i=random(2,length(pp)) |
|||
pp=left(pp,i-1)substr(pp,i) |
|||
return pp |
|||
/*─────────────────────────────────────check for balanced brackets [] */ |
|||
checkBal: procedure expose @.; arg y; nest=0 |
|||
if @.y then return -1 /*already done this expression ? */ |
|||
@.y=1 /*indicate expression processed. */ |
|||
do j=1 for length(y) |
|||
_=substr(y,j,1) |
|||
if _=='[' then nest=nest+1 |
|||
else do; nest=nest-1; if nest<0 then return 0; end |
|||
end |
|||
return nest==0 |
|||
</lang> |
|||
<pre style="height:40ex;overflow:scroll"> |
|||
Output (not repleatable due to the use of RANDOM: |
|||
balanced [][][][[]] |
|||
unbalanced [][][][[]]][ |
|||
unbalanced [ |
|||
unbalanced ] |
|||
balanced [] |
|||
unbalanced ][ |
|||
unbalanced ][][ |
|||
balanced [[]] |
|||
balanced [[[[[[[]]]]]]] |
|||
unbalanced [[[[[]]]][] |
|||
balanced [][] |
|||
unbalanced []][[] |
|||
unbalanced ]]][[[[] |
|||
unbalanced ][[]][[]][[]][[]][[] |
|||
unbalanced []][[]][[]][[]][[]][ |
|||
unbalanced []][ |
|||
balanced [][][][][][][][][][][][][][][][] |
|||
unbalanced []][[]][[]][ |
|||
balanced [][][][][][][][] |
|||
unbalanced ][][][][][][][][ |
|||
unbalanced ][[]][[]][[]][[]][[]][[] |
|||
unbalanced []][[]][[]][[]][[]][[]][[]][[]][ |
|||
unbalanced ][][][][][][][][][][ |
|||
unbalanced ][][][][][][][][][][][][][][ |
|||
unbalanced ][][][][][][][][][][][][][][][][ |
|||
unbalanced ][[]][[]][[]][[]][[]][[]][[] |
|||
unbalanced []][[]][[]][[]][[]][[]][[]][ |
|||
unbalanced ][][][][ |
|||
unbalanced []][[]][ |
|||
balanced [][][][][][][][][][][][] |
|||
unbalanced ][[] |
|||
unbalanced []][[]][[]][[]][[]][[]][ |
|||
unbalanced ][][][][][][ |
|||
balanced [][][][][][][][][][] |
|||
balanced [][][][][][][][][][][][][][] |
|||
balanced [][][][] |
|||
unbalanced ][[]][[]][[]][[] |
|||
unbalanced ][[]][[]][[]][[]][[]][[]][[]][[] |
|||
unbalanced ][][][][][][][][][][][][ |
|||
</pre> |
|||
=={{header|Ruby}}== |
=={{header|Ruby}}== |
||
Line 2,224: | Line 2,315: | ||
bad: []] |
bad: []] |
||
bad: [letters]</pre> |
bad: [letters]</pre> |
||
=={{header|Scala}}== |
=={{header|Scala}}== |
||
{{works with|Scala|2.9.1}} |
{{works with|Scala|2.9.1}} |