From b413d247da323881e60bf1c45506ba9273194874 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 3 Apr 2023 13:04:10 +0000 Subject: Challenge 211 Solutions (Raku) --- challenge-211/mark-anderson/raku/ch-1.raku | 31 ++++++++++++++++++++++++++++++ challenge-211/mark-anderson/raku/ch-2.raku | 22 +++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 challenge-211/mark-anderson/raku/ch-1.raku create mode 100644 challenge-211/mark-anderson/raku/ch-2.raku 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 +} -- cgit From ed49e15822bccd580f4a09da9ead6d52bc5d5d2a Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 3 Apr 2023 14:35:09 +0000 Subject: Challenge 211 Solutions (Raku) --- challenge-211/mark-anderson/raku/ch-1.raku | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/challenge-211/mark-anderson/raku/ch-1.raku b/challenge-211/mark-anderson/raku/ch-1.raku index 43c6f09b02..2b86bde846 100644 --- a/challenge-211/mark-anderson/raku/ch-1.raku +++ b/challenge-211/mark-anderson/raku/ch-1.raku @@ -21,11 +21,5 @@ ok toeplitz([1,2], 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 + @m[^@m.end;^@m[0].end] eqv @m[1..@m.end;1..@m[1].end] } -- cgit From 7fa49d501285c4b19d15736339bb405993d5a6ee Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 3 Apr 2023 15:05:25 +0000 Subject: Challenge 211 Solutions (Raku) --- challenge-211/mark-anderson/raku/ch-2.raku | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/challenge-211/mark-anderson/raku/ch-2.raku b/challenge-211/mark-anderson/raku/ch-2.raku index 768d0a4f09..b6563db667 100644 --- a/challenge-211/mark-anderson/raku/ch-2.raku +++ b/challenge-211/mark-anderson/raku/ch-2.raku @@ -8,14 +8,14 @@ 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 + for (^@nums).combinations(1..(@nums.elems div 2)) -> @a is copy { - my @b = ((0..@nums.end) (-) @a).keys; + my @b = ((^@nums) (-) @a).keys; - my @c = @nums[@a]; - my @d = @nums[@b]; + @a = @nums[@a]; + @b = @nums[@b]; - return True if (@c.sum / @c.elems) == (@d.sum / @d.elems) + return True if (@a.sum / @a.elems) == (@b.sum / @b.elems) } return False -- cgit From 21d3311f8353c8423f56bab95e4910190d8633f3 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Tue, 4 Apr 2023 05:35:00 +0000 Subject: Challenge 211 Solutions (Raku) --- challenge-211/mark-anderson/raku/ch-1.raku | 2 +- challenge-211/mark-anderson/raku/ch-2.raku | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/challenge-211/mark-anderson/raku/ch-1.raku b/challenge-211/mark-anderson/raku/ch-1.raku index 2b86bde846..4519f643b6 100644 --- a/challenge-211/mark-anderson/raku/ch-1.raku +++ b/challenge-211/mark-anderson/raku/ch-1.raku @@ -21,5 +21,5 @@ ok toeplitz([1,2], sub toeplitz(+@m) { - @m[^@m.end;^@m[0].end] eqv @m[1..@m.end;1..@m[1].end] + @m[ ^@m.end; ^@m[0].end ] eqv @m[ 1..@m.end; 1..@m[1].end ] } diff --git a/challenge-211/mark-anderson/raku/ch-2.raku b/challenge-211/mark-anderson/raku/ch-2.raku index b6563db667..255ada41f4 100644 --- a/challenge-211/mark-anderson/raku/ch-2.raku +++ b/challenge-211/mark-anderson/raku/ch-2.raku @@ -1,21 +1,21 @@ #!/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] +ok split-same-avg(1,2,3,4,5,6,7,8); # [1 8] [2 3 4 5 6 7] 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] +ok split-same-avg(3,3,5,5,5,2,2,1); # [2 3 3 5] [1 2 5 5] nok split-same-avg(5,5,5,2,2,1); sub split-same-avg(*@nums) { - for (^@nums).combinations(1..(@nums.elems div 2)) -> @a is copy + for (^@nums).combinations(1..@nums.elems div 2) -> @a is copy { - my @b = ((^@nums) (-) @a).keys; + my @b = (^@nums (-) @a).keys; @a = @nums[@a]; @b = @nums[@b]; - return True if (@a.sum / @a.elems) == (@b.sum / @b.elems) + return True if @a.sum / @a.elems == @b.sum / @b.elems } return False -- cgit