26 lines
598 B
Plaintext
26 lines
598 B
Plaintext
$ include "seed7_05.s7i";
|
|
include "bin32.s7i";
|
|
|
|
const func integer: grayEncode (in integer: n) is
|
|
return ord(bin32(n) >< bin32(n >> 1));
|
|
|
|
const func integer: grayDecode (in var integer: n) is func
|
|
result
|
|
var integer: decoded is 0;
|
|
begin
|
|
decoded := n;
|
|
while n > 1 do
|
|
n >>:= 1;
|
|
decoded := ord(bin32(decoded) >< bin32(n));
|
|
end while;
|
|
end func;
|
|
|
|
const proc: main is func
|
|
local
|
|
var integer: i is 0;
|
|
begin
|
|
for i range 0 to 32 do
|
|
writeln(i <& " => " <& grayEncode(i) radix 2 lpad0 6 <& " => " <& grayDecode(grayEncode(i)));
|
|
end for;
|
|
end func;
|