58 lines
1.2 KiB
Plaintext
58 lines
1.2 KiB
Plaintext
DECLARE FUNCTION checkBrackets% (brackets AS STRING)
|
|
DECLARE FUNCTION generator$ (length AS INTEGER)
|
|
|
|
RANDOMIZE TIMER
|
|
|
|
DO
|
|
x$ = generator$ (10)
|
|
PRINT x$,
|
|
IF checkBrackets(x$) THEN
|
|
PRINT "OK"
|
|
ELSE
|
|
PRINT "NOT OK"
|
|
END IF
|
|
LOOP WHILE LEN(x$)
|
|
|
|
FUNCTION checkBrackets% (brackets AS STRING)
|
|
'returns -1 (TRUE) if everything's ok, 0 (FALSE) if not
|
|
DIM L0 AS INTEGER, sum AS INTEGER
|
|
|
|
FOR L0 = 1 TO LEN(brackets)
|
|
SELECT CASE MID$(brackets, L0, 1)
|
|
CASE "["
|
|
sum = sum + 1
|
|
CASE "]"
|
|
sum = sum - 1
|
|
END SELECT
|
|
IF sum < 0 THEN
|
|
checkBrackets% = 0
|
|
EXIT FUNCTION
|
|
END IF
|
|
NEXT
|
|
|
|
IF 0 = sum THEN
|
|
checkBrackets% = -1
|
|
ELSE
|
|
checkBrackets% = 0
|
|
END IF
|
|
END FUNCTION
|
|
|
|
FUNCTION generator$ (length AS INTEGER)
|
|
z = INT(RND * length)
|
|
IF z < 1 THEN generator$ = "": EXIT FUNCTION
|
|
REDIM x(z * 2) AS STRING
|
|
FOR i = 0 TO z STEP 2
|
|
x(i) = "["
|
|
x(i + 1) = "]"
|
|
NEXT
|
|
FOR i = 1 TO UBOUND(x)
|
|
z = INT(RND * 2)
|
|
IF z THEN SWAP x(i), x(i - 1)
|
|
NEXT
|
|
xx$ = ""
|
|
FOR i = 0 TO UBOUND(x)
|
|
xx$ = xx$ + x(i)
|
|
NEXT
|
|
generator$ = xx$
|
|
END FUNCTION
|