Balanced brackets: Difference between revisions

Content added Content deleted
(Added solution for Modula-2)
(Added solution for Action!)
Line 300: Line 300:
[][]]][]]] => NOT OK
[][]]][]]] => NOT OK


</pre>

=={{header|Action!}}==
<lang Action!>PROC Generate(BYTE size CHAR ARRAY s)
BYTE i,half

s(0)=size
half=size RSH 1

FOR i=1 TO half
DO s(i)='[ OD

FOR i=half+1 TO size
DO s(i)='] OD
RETURN

PROC Shuffle(CHAR ARRAY s)
BYTE i,j,k,n,len,tmp

len=s(0)
n=Rand(len+1)
FOR k=1 TO n
DO
i=Rand(len)+1
j=Rand(len)+1
tmp=s(i)
s(i)=s(j)
s(j)=tmp
OD
RETURN

BYTE FUNC Balanced(CHAR ARRAY s)
INT i,lev
lev=0
FOR i=1 TO s(0)
DO
IF s(i)='[ THEN
lev==+1
ELSE
lev==-1
FI

IF lev<0 THEN
RETURN (0)
FI
OD

IF lev#0 THEN
RETURN (0)
FI
RETURN (1)

PROC Main()
CHAR ARRAY s(20)
BYTE i,b

FOR i=0 TO 20 STEP 2
DO
Generate(i,s)
Shuffle(s)
b=Balanced(s)

IF s(0)=0 THEN
Print("(empty)")
ELSE
Print(s)
FI
Print(" is ")
IF b=0 THEN
Print("not ")
FI
PrintE("balanced")
OD
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Balanced_brackets.png Screenshot from Atari 8-bit computer]
<pre>
(empty) is balanced
[] is balanced
[[]] is balanced
][][[] is not balanced
[]][[][] is not balanced
[[[]]]][[] is not balanced
[[[[[[]]]]]] is balanced
[[]][[[][]]][] is balanced
[[[[]][[]]]][]][ is not balanced
][][][[[[[]]][]]][ is not balanced
[[[[][][][][]][]]][] is balanced
</pre>
</pre>