Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
60
Task/Permutations/Modula-2/permutations.mod2
Normal file
60
Task/Permutations/Modula-2/permutations.mod2
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
MODULE Permute;
|
||||
|
||||
FROM Terminal
|
||||
IMPORT Read, Write, WriteLn;
|
||||
|
||||
FROM Terminal2
|
||||
IMPORT WriteString;
|
||||
|
||||
CONST MAXIDX = 6;
|
||||
MINIDX = 1;
|
||||
|
||||
TYPE TInpCh = ['a'..'z'];
|
||||
TChr = SET OF TInpCh;
|
||||
|
||||
VAR n,
|
||||
nl: INTEGER;
|
||||
ch: CHAR;
|
||||
a: ARRAY[MINIDX..MAXIDX] OF CHAR;
|
||||
kt: TChr = TChr{'a'..'f'};
|
||||
|
||||
PROCEDURE output;
|
||||
VAR i: INTEGER;
|
||||
BEGIN
|
||||
FOR i := MINIDX TO n DO Write(a[i]) END;
|
||||
WriteString(" | ");
|
||||
END output;
|
||||
|
||||
PROCEDURE exchange(VAR x, y : CHAR);
|
||||
VAR z: CHAR;
|
||||
BEGIN z := x; x := y; y := z
|
||||
END exchange;
|
||||
|
||||
PROCEDURE permute(k: INTEGER);
|
||||
VAR i: INTEGER;
|
||||
BEGIN
|
||||
IF k = 1 THEN
|
||||
output;
|
||||
INC(nl);
|
||||
IF (nl MOD 8 = 1) THEN WriteLn END;
|
||||
ELSE
|
||||
permute(k-1);
|
||||
FOR i := MINIDX TO k-1 DO
|
||||
exchange(a[i], a[k]);
|
||||
permute(k-1);
|
||||
exchange(a[i], a[k]);
|
||||
END
|
||||
END
|
||||
END permute;
|
||||
|
||||
BEGIN
|
||||
n := 0; nl := 1; WriteString("Input {a,b,c,d,e,f} >");
|
||||
REPEAT
|
||||
Read(ch);
|
||||
IF ch IN kt THEN INC(n); a[n] := ch; Write(ch) END
|
||||
UNTIL (ch <= " ") OR (n > MAXIDX);
|
||||
|
||||
WriteLn;
|
||||
IF n > 0 THEN permute(n) END;
|
||||
(*Wait*)
|
||||
END Permute.
|
||||
Loading…
Add table
Add a link
Reference in a new issue