Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
47
Task/Balanced-brackets/Modula-2/balanced-brackets.mod2
Normal file
47
Task/Balanced-brackets/Modula-2/balanced-brackets.mod2
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
MODULE Brackets;
|
||||
IMPORT IO, Lib;
|
||||
|
||||
CONST MaxN = 4;
|
||||
|
||||
PROCEDURE DoTest( N : CARDINAL);
|
||||
VAR
|
||||
brStr : ARRAY [0..2*MaxN] OF CHAR; (* string of brackets *)
|
||||
verdict : ARRAY [0..2] OF CHAR;
|
||||
br : CHAR;
|
||||
k, nL, nR, randNum : CARDINAL;
|
||||
count : INTEGER;
|
||||
BEGIN
|
||||
k := 0; (* index into brStr *)
|
||||
nL := N; nR := N; (* number of left/right brackets remaining *)
|
||||
WHILE (nL > 0) AND (nR > 0) DO
|
||||
randNum := Lib.RANDOM( nL + nR);
|
||||
IF (randNum < nL) THEN brStr[k] := '['; DEC(nL);
|
||||
ELSE brStr[k] := ']'; DEC(nR); END;
|
||||
INC(k);
|
||||
END;
|
||||
(* Here when only one kind of bracket is possible *)
|
||||
IF (nL = 0) THEN br := ']' ELSE br := '['; END;
|
||||
WHILE (k < 2*N) DO brStr[k] := br; INC(k); END;
|
||||
brStr[k] := 0C; (* null to mark end of string *)
|
||||
|
||||
(* Test for balance *)
|
||||
count := 0;
|
||||
k := 0;
|
||||
REPEAT
|
||||
IF brStr[k] = '[' THEN INC( count) ELSE DEC( count) END;
|
||||
INC( k);
|
||||
UNTIL (count < 0) OR (k = 2*N);
|
||||
IF (count < 0) THEN verdict := 'no' ELSE verdict := 'yes' END;
|
||||
IO.WrStr( brStr); IO.WrStr(' '); IO.WrStr( verdict);
|
||||
IO.WrLn;
|
||||
END DoTest;
|
||||
|
||||
(* Main routine *)
|
||||
VAR
|
||||
j : CARDINAL;
|
||||
BEGIN
|
||||
Lib.RANDOMIZE;
|
||||
FOR j := 1 TO 10 DO
|
||||
DoTest( Lib.RANDOM(MaxN) + 1);
|
||||
END;
|
||||
END Brackets.
|
||||
Loading…
Add table
Add a link
Reference in a new issue