Balanced brackets: Difference between revisions

→‎{{header|J}}: Generate & test pairs
(→‎{{header|J}}: genBracketPairs handles array argument)
(→‎{{header|J}}: Generate & test pairs)
Line 41:
bracketDepth =: '[]' -&(+/\)/@:(=/) ]
checkBalanced =: _1 -.@e. bracketDepth</lang>
'''Examples''':<lang j> (,&'TESTS EXPECTED'=:( a:"_`0:`[}, ,&< (<'bad';'OK') ={::~ ]checkBalanced)/"1 genBracketPairs |: cut;i._2 noun define10
(empty) OK
][] OK bad
][[] BADbad
[][[]]] OK
[][[]][] OK BAD
[][[[][[ ]]] OK BAD
[]][]][]][[[ OK bad
[[]][[][][]][] OK BAD
]]]][[][][[[[]][ BADbad
[]]][][][[[[]][[]] OK bad</lang>
[[[][[]]]] OK
[][][[][]][] OK
[[]][]]]][[[][ BAD
][][[][][][[]]][ BAD
][[[][]][]]][][[][ BAD
]][][]][[][[][[]][][ BAD
[[[][[][]]][]]][[]]][[ BAD
[[]]][]][[[[]]][[][][[]] BAD
][[][][]][[[]][[[[][]]]][] BAD
]][[][[][[[[]][[][]][[]]]]][ BAD
)
 
EXPECTED -: checkBalanced &> TESTS
1</lang>
'''Comments''': This task highlights the versatility and usefulness of J's scanning modifiers, <code>/</code> and <code>\</code>.
 
892

edits