[ dup 1 >> ^ ] is encodegray ( n --> n ) [ dup [ dip [ 1 >> ] over ^ over 0 = until ] nip ] is decodegray ( n --> n ) [ [] unrot times [ 2 /mod char 0 + rot join swap ] drop echo$ ] is echobin ( n n --> ) say "number encoded decoded" cr say "------ ------- -------" cr 32 times [ sp i^ 5 echobin say " -> " i^ encodegray dup 5 echobin say " -> " decodegray 5 echobin cr ]