Sync
This commit is contained in:
parent
6f050a029e
commit
776bba907c
3887 changed files with 59894 additions and 7280 deletions
51
Task/Gray-code/Component-Pascal/gray-code.component
Normal file
51
Task/Gray-code/Component-Pascal/gray-code.component
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
MODULE GrayCodes;
|
||||
IMPORT StdLog,SYSTEM;
|
||||
|
||||
PROCEDURE Encode*(i: INTEGER; OUT x: INTEGER);
|
||||
VAR
|
||||
j: INTEGER;
|
||||
s,r: SET;
|
||||
BEGIN
|
||||
s := BITS(i);j := MAX(SET);
|
||||
WHILE (j >= 0) & ~(j IN s) DO DEC(j) END;
|
||||
r := {};IF j >= 0 THEN INCL(r,j) END;
|
||||
WHILE j > 0 DO
|
||||
IF ((j IN s) & ~(j - 1 IN s)) OR (~(j IN s) & (j - 1 IN s)) THEN INCL(r,j-1) END;
|
||||
DEC(j)
|
||||
END;
|
||||
x := SYSTEM.VAL(INTEGER,r)
|
||||
END Encode;
|
||||
|
||||
PROCEDURE Decode*(x: INTEGER; OUT i: INTEGER);
|
||||
VAR
|
||||
j: INTEGER;
|
||||
s,r: SET;
|
||||
BEGIN
|
||||
s := BITS(x);r:={};j := MAX(SET);
|
||||
WHILE (j >= 0) & ~(j IN s) DO DEC(j) END;
|
||||
IF j >= 0 THEN INCL(r,j) END;
|
||||
WHILE j > 0 DO
|
||||
IF ((j IN r) & ~(j - 1 IN s)) OR (~(j IN r) & (j - 1 IN s)) THEN INCL(r,j-1) END;
|
||||
DEC(j)
|
||||
END;
|
||||
i := SYSTEM.VAL(INTEGER,r);
|
||||
END Decode;
|
||||
|
||||
|
||||
PROCEDURE Do*;
|
||||
VAR
|
||||
grayCode,binCode: INTEGER;
|
||||
i: INTEGER;
|
||||
BEGIN
|
||||
StdLog.String(" i ");StdLog.String(" bin code ");StdLog.String(" gray code ");StdLog.Ln;
|
||||
StdLog.String("---");StdLog.String(" ----------------");StdLog.String(" ---------------");StdLog.Ln;
|
||||
FOR i := 0 TO 32 DO;
|
||||
Encode(i,grayCode);Decode(grayCode,binCode);
|
||||
StdLog.IntForm(i,10,3,' ',FALSE);
|
||||
StdLog.IntForm(binCode,2,16,' ',TRUE);
|
||||
StdLog.IntForm(grayCode,2,16,' ',TRUE);
|
||||
StdLog.Ln;
|
||||
END
|
||||
END Do;
|
||||
|
||||
END GrayCodes.
|
||||
Loading…
Add table
Add a link
Reference in a new issue