Balanced brackets: Difference between revisions

(Updated third D entry)
Line 1,198:
#define extensions.
 
#symbol randomBrackets = &&(:aLength)
[
^ (0 == aLength)
#var aBrackets := Array new &type'length:aLength &function: &&:i[ CharValue new:91 ] + Array new &type'length:aLength &function: &&:i[ CharValue new:93 ].
? [ emptyLiteralValue ]
! [
#var aBrackets := ArrayarrayControl new &type'length:aLength &functioneach: &&:i[ CharValue new:91 ] + ArrayarrayControl new &type'length:aLength &functioneach: &&:i[ CharValue new:93 ].
randomControl randomize:(aLength * 2) &array:aBrackets.
^ Summing new:(String new) foreach:aBrackets Literalliteral.
].
].
 
#symbol isBalanced = &&(:aLiteral)
[
#var aCounter := Integer new:0.
 
control foreach:aLiteral &until: &&:aChar [ aCounter append:(aChar => "[" ? [ 1 ] "]" ? [ -1 ]) < 0 ].
 
^ (0 == aCounter).
].
 
#symbol program =
[
control fromforrange &int:0 &tillint:109 &do: (&&int:aLength)
[
#var anStr := randomBrackets:aLength.
#var balanced := isBalanced:anStr.
 
consoleconsoleEx writewriteLine:"""" write:anStr write:"""" writeLine:(balanced => true ? [ " is balanced" ] false ? [ " is not balanced" ]).
].
 
Anonymous user