aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-11-25 22:14:07 +0000
committerGitHub <noreply@github.com>2020-11-25 22:14:07 +0000
commitc85be40b0611062a8e8c5f3fab1deb0b67d32d44 (patch)
tree9054164f0077e1820f74c34138e26e7535c2cc42
parent87c2d794825b29e3ec26d3b9bdc1974e89f13fcc (diff)
parent5f363976fa1c512469470084da32d81bf218e9fc (diff)
downloadperlweeklychallenge-club-c85be40b0611062a8e8c5f3fab1deb0b67d32d44.tar.gz
perlweeklychallenge-club-c85be40b0611062a8e8c5f3fab1deb0b67d32d44.tar.bz2
perlweeklychallenge-club-c85be40b0611062a8e8c5f3fab1deb0b67d32d44.zip
Merge pull request #2850 from wambash/challenge-week-088
Challenge week 088
-rw-r--r--challenge-088/wambash/raku/ch-1.raku17
-rw-r--r--challenge-088/wambash/raku/ch-2.raku43
2 files changed, 60 insertions, 0 deletions
diff --git a/challenge-088/wambash/raku/ch-1.raku b/challenge-088/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..0d5632ed65
--- /dev/null
+++ b/challenge-088/wambash/raku/ch-1.raku
@@ -0,0 +1,17 @@
+#!/usr/bin/env raku
+
+sub array-of-product (+@n) {
+ @n
+ andthen .keys
+ andthen .map: { [*] @n[ 0 ..^ $_, $_ ^.. * ].flat }
+}
+
+multi MAIN (+@n) {
+ say array-of-product @n
+}
+
+multi MAIN (Bool :$test!) {
+ use Test;
+ is array-of-product(5, 2, 1, 4, 3), (24, 60, 120, 30, 40);
+ is array-of-product(2, 1, 4, 3), (12, 24, 6, 8);
+}
diff --git a/challenge-088/wambash/raku/ch-2.raku b/challenge-088/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..bce07d29b6
--- /dev/null
+++ b/challenge-088/wambash/raku/ch-2.raku
@@ -0,0 +1,43 @@
+#!/usr/bin/env raku
+
+my @matrix = [
+ [ 1, 2, 3 ],
+ [ 4, 5, 6 ],
+ [ 7, 8, 9 ],
+ ];
+
+sub rotate-left (+@n) {
+ @n[0].keys
+ andthen .reverse
+ andthen .map: { @n[*;$_] }\
+}
+
+sub spiral-matrix (+@n) {
+ \( matrix => @n, spiral => Empty ), { \( matrix => .<matrix>.skip.&rotate-left, spiral => .<matrix>.head ) } ... !*.<matrix>
+ andthen .map: |*.<spiral>
+}
+
+multi MAIN (Bool :$test!) {
+ use Test;
+
+ my @matrix = (
+ 1, 2, 3 ;
+ 4, 5, 6 ;
+ 7, 8, 9 ;
+ );
+ my $rotated = (
+ 3,6,9;
+ 2,5,8;
+ 1,4,7;
+ );
+ my @matrix2 = (
+ 1, 2, 3, 4 ;
+ 5, 6, 7, 8 ;
+ 9, 10, 11, 12 ;
+ 13, 14, 15, 16 ;
+ );
+
+ is-deeply rotate-left(@matrix), $rotated;
+ is-deeply spiral-matrix(@matrix), (1, 2, 3, 6, 9, 8, 7, 4, 5);
+ is-deeply spiral-matrix(@matrix2), (1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10);
+}