aboutsummaryrefslogtreecommitdiff
path: root/challenge-211
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2023-04-10 00:35:06 +0100
committerGitHub <noreply@github.com>2023-04-10 00:35:06 +0100
commitbee358b75061fd8a86d9d59668dcc1138fab6b23 (patch)
tree12f386c8b8c12ddce9c7aed3d44b02d4a2716181 /challenge-211
parent9b60f4c1b550f0e1ad28f312b85b2cb0a2fde961 (diff)
parent5cd8262ea32c8c204f6bce0c6ee9fd26279f39cc (diff)
downloadperlweeklychallenge-club-bee358b75061fd8a86d9d59668dcc1138fab6b23.tar.gz
perlweeklychallenge-club-bee358b75061fd8a86d9d59668dcc1138fab6b23.tar.bz2
perlweeklychallenge-club-bee358b75061fd8a86d9d59668dcc1138fab6b23.zip
Merge pull request #7875 from wambash/challenge-week-211
Challenge week 211
Diffstat (limited to 'challenge-211')
-rw-r--r--challenge-211/wambash/raku/ch-1.raku19
-rw-r--r--challenge-211/wambash/raku/ch-2.raku37
2 files changed, 56 insertions, 0 deletions
diff --git a/challenge-211/wambash/raku/ch-1.raku b/challenge-211/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..91aef076c5
--- /dev/null
+++ b/challenge-211/wambash/raku/ch-1.raku
@@ -0,0 +1,19 @@
+#!/usr/bin/env raku
+
+sub toeplitz-matrix (+@matrix) {
+ @matrix
+ andthen .rotor: 2 => -1
+ andthen .map: -> (@x,@y) { @x.head(*-1) eqv @y.tail(*-1) }\
+ andthen .all
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is-deeply toeplitz-matrix([4, 3, 2, 1], [5, 4, 3, 2],[6, 5, 4, 3],),True;
+ is-deeply toeplitz-matrix([1,2,3],[3, 2, 1],),False;
+ done-testing;
+}
+
+multi MAIN (*@matrix) {
+ say ?toeplitz-matrix @matrix.map: *.comb: /\d+/
+}
diff --git a/challenge-211/wambash/raku/ch-2.raku b/challenge-211/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..ab6f2a060c
--- /dev/null
+++ b/challenge-211/wambash/raku/ch-2.raku
@@ -0,0 +1,37 @@
+#!/usr/bin/env raku
+
+sub average { @^a.sum / @^a.elems }
+
+sub split-same-average (+@nums) {
+ my $average = average @nums;
+ my $elems-limit = @nums.elems div 2;
+
+ @nums
+ andthen .combinations( 1..$elems-limit )
+ andthen .first: { .&average == $average },
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is split-same-average(1, 2, 3, 4, 5, 6, 7, 8), (1,8);
+ is split-same-average(1,3), Nil;
+ subtest {
+ plan 2;
+ my @twenty = <
+ 44531 73257 49118 89580
+ 25846 88015 19523 99285
+ 75574 80036 10796 89896
+ 77776 69138 75824 80610
+ 47566 1623 20068 5294
+ >;
+ with split-same-average(@twenty) {
+ is .&average, average(@twenty);
+ is .elems, @twenty.elems div 2;
+ }
+ }
+ done-testing;
+}
+
+multi MAIN (*@nums) {
+ say split-same-average @nums
+}