Balanced brackets: Difference between revisions

Content added Content deleted
(add SETL)
(Added various BASIC dialects (Applesoft BASIC, Chipmunk Basic, GW-BASIC, MSX Basic, and True BASIC))
Line 1,511: Line 1,511:
=={{header|BASIC}}==
=={{header|BASIC}}==
{{works with|QBasic}}
{{works with|QBasic}}

<syntaxhighlight lang="qbasic">DECLARE FUNCTION checkBrackets% (brackets AS STRING)
<syntaxhighlight lang="qbasic">DECLARE FUNCTION checkBrackets% (brackets AS STRING)
DECLARE FUNCTION generator$ (length AS INTEGER)
DECLARE FUNCTION generator$ (length AS INTEGER)
Line 1,569: Line 1,568:
generator$ = xx$
generator$ = xx$
END FUNCTION</syntaxhighlight>
END FUNCTION</syntaxhighlight>
{{out}}

<pre> [][[][][]] OK
Sample output:
[][[][][]] OK
][[[]] NOT OK
][[[]] NOT OK
[][] OK
[][] OK
Line 1,582: Line 1,580:
][][[[]] NOT OK
][][[[]] NOT OK
][[]][ NOT OK
][[]][ NOT OK
OK
OK</pre>

==={{header|Applesoft BASIC}}===
The [[#MSX_BASIC|MSX BASIC]] solution works without any changes.

==={{header|BASIC256}}===
{{trans|Yabasic}}
<syntaxhighlight lang="basic256">s$ = "[[]][]"
print s$; " = ";

if not check_brackets(s$) then print "not ";
print "ok"
end

function check_brackets(s$)
level = 0
for i = 1 to length(s$)
c$ = mid(s$, i, 1)
begin case
case c$ = "["
level = level + 1
case c$ = "]"
level = level - 1
if level < 0 then exit for
end case
next i
return level = 0
end function</syntaxhighlight>

==={{header|Chipmunk Basic}}===
The [[#MSX_BASIC|MSX BASIC]] solution works without any changes.


==={{header|Commodore BASIC}}===
==={{header|Commodore BASIC}}===
Line 1,608: Line 1,636:
2000 DATA , [], ][, [][], ][][, [[][]], []][[]</syntaxhighlight>
2000 DATA , [], ][, [][], ][][, [[][]], []][[]</syntaxhighlight>


==={{header|GW-BASIC}}===
{{works with|PC-BASIC|any}}
{{works with|BASICA}}
The [[#MSX_BASIC|MSX BASIC]] solution works without any changes.


=={{header|BASIC256}}==
==={{header|MSX Basic}}===
Based on Commodore BASIC implementation
{{trans|Yabasic}}
{{works with|MSX BASIC|any}}
<syntaxhighlight lang="basic256">s$ = "[[]][]"
{{works with|Applesoft BASIC}}
print s$; " = ";
{{works with|BASICA}}
{{works with|Chipmunk Basic}}
{{works with|GW-BASIC}}
{{works with|PC-BASIC|any}}
{{works with|QBasic}}
<syntaxhighlight lang="qbasic">100 CLS : rem 10 HOME for Applesoft BASIC
110 FOR N = 1 TO 7
120 READ S$
130 IF S$ = "" THEN PRINT"(EMPTY)";: GOTO 150
140 PRINT S$;
150 PRINT TAB(9);
160 GOSUB 190
170 NEXT N
180 END
190 S = 0
200 FOR K = 1 TO LEN(S$)
210 C$ = MID$(S$,K,1)
220 IF C$ = "[" THEN S = S+1
230 IF C$ = "]" THEN S = S-1
240 IF S < 0 THEN PRINT "NOT OK": RETURN
250 NEXT K
260 IF S = 0 THEN PRINT " OK": RETURN
270 PRINT "NOT OK"
280 RETURN
290 DATA "", "[]", "][", "[][]", "][][", "[[][]]", "[]][[]"</syntaxhighlight>
{{out}}
<pre>(EMPTY) OK
[] OK
][ NOT OK
[][] OK
][][ NOT OK
[[][]] OK
[]][[] NOT OK</pre>


==={{header|True BASIC}}===
if not check_brackets(s$) then print "not ";
{{trans|Run BASIC}}
print "ok"
<syntaxhighlight lang="qbasic">DIM brk$(10)
end
LET brk$(1) = "[[[][]]]"

LET brk$(2) = "[[[]][[[][[][]]]]]"
function check_brackets(s$)
LET brk$(3) = "][][]][["
level = 0
LET brk$(4) = "[][][]"
for i = 1 to length(s$)
LET brk$(5) = "[][]][]][[]]][[["
c$ = mid(s$, i, 1)
LET brk$(6) = "]][[[[]]]][]]][[[["
begin case
case c$ = "["
LET brk$(7) = "[[][[[]]][]]"
LET brk$(8) = "[]][][][[[]]"
level = level + 1
case c$ = "]"
LET brk$(9) = "][]][["
LET brk$(10) = "[]][][][[]"
level = level - 1
if level < 0 then exit for
end case
next i
return level = 0
end function</syntaxhighlight>


FOR i = 1 TO 7
LET b$ = brk$(i)
DO WHILE POS(b$,"[]") <> 0
LET x = POS(b$,"[]")
IF x > 0 THEN LET b$ = (b$)[1:x-1] & (b$)[x+2:maxnum]
LOOP
IF TRIM$(b$) = "" THEN
PRINT " OK ";
ELSE
PRINT "Not OK ";
END IF
PRINT brk$(i)
NEXT i
END</syntaxhighlight>


=={{header|Batch File}}==
=={{header|Batch File}}==