From bde6a78552a496d054be296383ac0bdbcb2ae722 Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Wed, 25 Nov 2020 21:58:53 +0100 Subject: solutions week 088 --- challenge-088/wambash/raku/ch-1.raku | 17 ++++++++++++++ challenge-088/wambash/raku/ch-2.raku | 43 ++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 challenge-088/wambash/raku/ch-1.raku create mode 100644 challenge-088/wambash/raku/ch-2.raku 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..9d21ad30e5 --- /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 => ..skip.&rotate-left, spiral => ..head ) } ... !*. + andthen .map: *. +} + +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 spiral-matrix(@matrix), (1, 2, 3, 6, 9, 8, 7, 4, 5); + is spiral-matrix(@matrix2), (1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10); +} -- cgit From 5f363976fa1c512469470084da32d81bf218e9fc Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Wed, 25 Nov 2020 22:05:29 +0100 Subject: solution week 088-2 — now works is-deeply tests for spiral-matrix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- challenge-088/wambash/raku/ch-2.raku | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/challenge-088/wambash/raku/ch-2.raku b/challenge-088/wambash/raku/ch-2.raku index 9d21ad30e5..bce07d29b6 100644 --- a/challenge-088/wambash/raku/ch-2.raku +++ b/challenge-088/wambash/raku/ch-2.raku @@ -14,7 +14,7 @@ sub rotate-left (+@n) { sub spiral-matrix (+@n) { \( matrix => @n, spiral => Empty ), { \( matrix => ..skip.&rotate-left, spiral => ..head ) } ... !*. - andthen .map: *. + andthen .map: |*. } multi MAIN (Bool :$test!) { @@ -38,6 +38,6 @@ multi MAIN (Bool :$test!) { ); is-deeply rotate-left(@matrix), $rotated; - is spiral-matrix(@matrix), (1, 2, 3, 6, 9, 8, 7, 4, 5); - is spiral-matrix(@matrix2), (1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10); + 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); } -- cgit