langs a-z
This commit is contained in:
parent
db842d013d
commit
d066446780
11389 changed files with 98361 additions and 1020 deletions
16
Task/Gray-code/Perl-6/gray-code-1.pl6
Normal file
16
Task/Gray-code/Perl-6/gray-code-1.pl6
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
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;
|
||||
}
|
||||
19
Task/Gray-code/Perl-6/gray-code-2.pl6
Normal file
19
Task/Gray-code/Perl-6/gray-code-2.pl6
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
multi bin_to_gray ( [] ) { [] }
|
||||
multi bin_to_gray ( [$head, *@tail] ) {
|
||||
return [ $head, ( @tail Z+^ ($head, @tail) ) ];
|
||||
}
|
||||
|
||||
multi gray_to_bin ( [] ) { [] }
|
||||
multi gray_to_bin ( [$head, *@tail] ) {
|
||||
my @bin := $head, (@tail Z+^ @bin);
|
||||
return @bin.flat;
|
||||
}
|
||||
|
||||
for ^32 -> $n {
|
||||
my @b = $n.fmt('%b').comb;
|
||||
my $g = bin_to_gray(@b);
|
||||
my $d = gray_to_bin($g);
|
||||
printf "%2d: %5s => %5s => %5s: %2d\n",
|
||||
$n, @b.join, $g.join, $d.join, :2($d.join);
|
||||
die if :2($d.join) != $n;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue