diff options
| -rw-r--r-- | challenge-097/mark-anderson/raku/ch-1.raku | 19 | ||||
| -rw-r--r-- | challenge-097/mark-anderson/raku/ch-2.raku | 16 |
2 files changed, 35 insertions, 0 deletions
diff --git a/challenge-097/mark-anderson/raku/ch-1.raku b/challenge-097/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..4db6d53f86 --- /dev/null +++ b/challenge-097/mark-anderson/raku/ch-1.raku @@ -0,0 +1,19 @@ +#!/usr/bin/env raku + +use Test; +plan 4; + +my $S = "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG"; +my $R = "QEB NRFZH YOLTK CLU GRJMP LSBO QEB IXWV ALD"; + +is caesar($S, 3), $R; +is caesar($S, 29), $R; +is caesar($S, -23), $R; +is caesar($S, -49), $R; + +sub caesar($S, $N) +{ + my @A = "A".."Z"; + + $S.trans: @A => @A.rotate: -$N; +} diff --git a/challenge-097/mark-anderson/raku/ch-2.raku b/challenge-097/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..377566e6d4 --- /dev/null +++ b/challenge-097/mark-anderson/raku/ch-2.raku @@ -0,0 +1,16 @@ +#!/usr/bin/env raku + +use Test; +plan 4; + +is flips("101100101", 3), 1; +is flips("10110111", 4), 2; +is flips("1111000010101100", 2), 8; +is flips("1111000010101100", 4), 8; + +sub flips($B, $S) +{ + my ($head, @tail) = $B.comb: $S; + + .elems given flat @tail.map({ ("0b$head" +^ "0b$_").base(2).comb("1") }); +} |
