diff options
| author | Mark <53903062+andemark@users.noreply.github.com> | 2023-04-03 13:04:10 +0000 |
|---|---|---|
| committer | Mark <53903062+andemark@users.noreply.github.com> | 2023-04-03 13:04:10 +0000 |
| commit | b413d247da323881e60bf1c45506ba9273194874 (patch) | |
| tree | 34e880eea05705b2ee73406d2f3ea42adc89aa92 | |
| parent | ed17a0bef83e3276a3949814dab37a8a51871041 (diff) | |
| download | perlweeklychallenge-club-b413d247da323881e60bf1c45506ba9273194874.tar.gz perlweeklychallenge-club-b413d247da323881e60bf1c45506ba9273194874.tar.bz2 perlweeklychallenge-club-b413d247da323881e60bf1c45506ba9273194874.zip | |
Challenge 211 Solutions (Raku)
| -rw-r--r-- | challenge-211/mark-anderson/raku/ch-1.raku | 31 | ||||
| -rw-r--r-- | challenge-211/mark-anderson/raku/ch-2.raku | 22 |
2 files changed, 53 insertions, 0 deletions
diff --git a/challenge-211/mark-anderson/raku/ch-1.raku b/challenge-211/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..43c6f09b02 --- /dev/null +++ b/challenge-211/mark-anderson/raku/ch-1.raku @@ -0,0 +1,31 @@ +#!/usr/bin/env raku +use Test; + +ok toeplitz([4, 3, 2, 1], + [5, 4, 3, 2], + [6, 5, 4, 3]); + +nok toeplitz([1, 2, 3], + [3, 2, 1]); + +ok toeplitz([4, 3, 2, 1], + [5, 4, 3, 2], + [6, 5, 4, 3], + [7, 6, 5, 4], + [8, 7, 6, 5]); + +ok toeplitz([1,2], + [2,1], + [3,2], + [4,3]); + +sub toeplitz(+@m) +{ + until @m.elems == 1 + { + return False unless @m[0;^@m[0].end] eqv @m[1;1..@m[1].end]; + shift @m + } + + return True +} diff --git a/challenge-211/mark-anderson/raku/ch-2.raku b/challenge-211/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..768d0a4f09 --- /dev/null +++ b/challenge-211/mark-anderson/raku/ch-2.raku @@ -0,0 +1,22 @@ +#!/usr/bin/env raku +use Test; + +ok split-same-avg(1,2,3,4,5,6,7,8); # [1 8] [5 4 6 3 7 2] +nok split-same-avg(1,3); +ok split-same-avg(3,3,5,5,5,2,2,1); # [3 3 5 2] [2 5 5 1] +nok split-same-avg(5,5,5,2,2,1); + +sub split-same-avg(*@nums) +{ + for (0..@nums.end).combinations(1..(@nums.elems div 2)) -> @a + { + my @b = ((0..@nums.end) (-) @a).keys; + + my @c = @nums[@a]; + my @d = @nums[@b]; + + return True if (@c.sum / @c.elems) == (@d.sum / @d.elems) + } + + return False +} |
