RosettaCodeData/Task/Gray-code/Draco/gray-code.draco

29 lines
499 B
Plaintext

proc gray_encode(word n) word:
n >< (n >> 1)
corp
proc gray_decode(word n) word:
word r;
r := n;
while
n := n >> 1;
n > 0
do
r := r >< n
od;
r
corp
proc main() void:
word i, enc, dec;
for i from 0 upto 31 do
enc := gray_encode(i);
dec := gray_decode(enc);
writeln(i:2, ": ",
i:b:5, " => ",
enc:b:5, " => ",
dec:b:5, " => ",
dec:2)
od
corp