Gray code: Difference between revisions

Line 4,489:
=={{header|Raku}}==
(formerly Perl 6)
<lang perl6>sub gray_encode ( Int $n --> Int ) {
sub gray_encode ( Int $n --> Int ) {
return $n +^ ( $n +> 1 );
}
 
sub gray_decode ( Int $n is copy --> Int ) {
my $mask = 1 +< (32-2);
$n +^= $mask +> 1 if $n +& $mask while $mask +>= 1;
return $n;
}
 
for ^32 -> $n {
my $g = gray_encode($n);
my $d = gray_decode($g);
printf "%2d: %5b => %5b => %5b: %2d\n", $n, $n, $g, $d, $d;
die if $d != $n;
}
}</lang>
 
{{out}}
9

edits