17 lines
327 B
Factor
17 lines
327 B
Factor
USING: math.ranges locals ;
|
|
IN: rosetta-gray
|
|
|
|
: gray-encode ( n -- n' ) dup -1 shift bitxor ;
|
|
|
|
:: gray-decode ( n! -- n' )
|
|
n :> p!
|
|
[ n -1 shift dup n! 0 = not ] [
|
|
p n bitxor p!
|
|
] while
|
|
p ;
|
|
|
|
: main ( -- )
|
|
-1 32 [a,b] [ dup [ >bin ] [ gray-encode ] bi [ >bin ] [ gray-decode ] bi 4array . ] each ;
|
|
|
|
MAIN: main
|