$ 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;