diff options
| -rw-r--r-- | challenge-070/roger-bell-west/perl/ch-1.pl | 23 | ||||
| -rwxr-xr-x | challenge-070/roger-bell-west/perl/ch-2.pl | 26 | ||||
| -rw-r--r-- | challenge-070/roger-bell-west/raku/ch-1.p6 | 19 | ||||
| -rwxr-xr-x | challenge-070/roger-bell-west/raku/ch-2.p6 | 24 |
4 files changed, 92 insertions, 0 deletions
diff --git a/challenge-070/roger-bell-west/perl/ch-1.pl b/challenge-070/roger-bell-west/perl/ch-1.pl new file mode 100644 index 0000000000..f295850558 --- /dev/null +++ b/challenge-070/roger-bell-west/perl/ch-1.pl @@ -0,0 +1,23 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use Test::More tests => 1; + +is(swap('perlandraku',3,4), + 'pndraerlaku', + 'example 1', + ); + +sub swap { + my $s=shift; + my $c=shift; + my $o=shift; + my $n=length($s); + my @s=split '',$s; + foreach my $ci (1..$c) { + ($s[$ci % $n],$s[($ci+$o) % $n]) = ($s[($ci+$o) % $n],$s[$ci % $n]); + } + return join('',@s); +} diff --git a/challenge-070/roger-bell-west/perl/ch-2.pl b/challenge-070/roger-bell-west/perl/ch-2.pl new file mode 100755 index 0000000000..fe60ec3be4 --- /dev/null +++ b/challenge-070/roger-bell-west/perl/ch-2.pl @@ -0,0 +1,26 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use Test::More tests => 1; + +is_deeply(gray(4), + [0, 1, 3, 2, 6, 7, 5, 4, 12, 13, 15, 14, 10, 11, 9, 8], + 'example 1', + ); + +sub gray { + my $depth=shift; + my @s=(0,1); + if ($depth>1) { + my $k=1; + foreach (2..$depth) { + $k*=2; + my @o=@s; + push @o,map {$_ | $k} reverse @s; + @s=@o; + } + } + return \@s; +} diff --git a/challenge-070/roger-bell-west/raku/ch-1.p6 b/challenge-070/roger-bell-west/raku/ch-1.p6 new file mode 100644 index 0000000000..bb14f48040 --- /dev/null +++ b/challenge-070/roger-bell-west/raku/ch-1.p6 @@ -0,0 +1,19 @@ +#! /usr/bin/perl6 + +use Test; + +plan 1; + +is(swap('perlandraku',3,4), + 'pndraerlaku', + 'example 1', + ); + +sub swap($s,$c,$o) { + my $n=$s.chars; + my @s=$s.comb; + for (1..$c) -> $ci { + (@s[$ci % $n],@s[($ci+$o) % $n]) = (@s[($ci+$o) % $n],@s[$ci % $n]); + } + return join('',@s); +} diff --git a/challenge-070/roger-bell-west/raku/ch-2.p6 b/challenge-070/roger-bell-west/raku/ch-2.p6 new file mode 100755 index 0000000000..e8daa93e79 --- /dev/null +++ b/challenge-070/roger-bell-west/raku/ch-2.p6 @@ -0,0 +1,24 @@ +#! /usr/bin/perl6 + +use Test; + +plan 1; + +is-deeply(gray(4), + [0, 1, 3, 2, 6, 7, 5, 4, 12, 13, 15, 14, 10, 11, 9, 8], + 'example 1', + ); + +sub gray ($depth) { + my @s=(0,1); + if ($depth>1) { + my $k=1; + for (2..$depth) { + $k*=2; + my @o=@s; + map {push @o, $_ +| $k}, reverse @s.flat; + @s=@o; + } + } + return @s; +} |
