From 57282e939238dbd4fddfe636eab05c953f48d41a Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 22 Apr 2024 09:00:07 +0000 Subject: Challenge 266 Solutions (Raku) --- challenge-266/mark-anderson/raku/ch-1.raku | 19 +++ challenge-266/mark-anderson/raku/ch-2.raku | 195 +++++++++++++++++++++++++++++ 2 files changed, 214 insertions(+) create mode 100644 challenge-266/mark-anderson/raku/ch-1.raku create mode 100644 challenge-266/mark-anderson/raku/ch-2.raku diff --git a/challenge-266/mark-anderson/raku/ch-1.raku b/challenge-266/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..1f01622531 --- /dev/null +++ b/challenge-266/mark-anderson/raku/ch-1.raku @@ -0,0 +1,19 @@ +#!/usr/bin/env raku +use Test; + +is-deeply uncommon-words('Mango is sweet', 'Mango is sour'), ('sweet', 'sour'), 'example 1'; +is-deeply uncommon-words('Mango Mango', 'Orange'), ('Orange',), 'example 2'; +is-deeply uncommon-words('Mango is Mango', 'Orange is Orange'), (), 'example 3'; + +sub uncommon-words($s1, $s2) +{ + # A literal solution using the one and none junctions + sub uw($s1, $s2) + { + my @s1 = $s1.words; + my @ones = @s1.unique.grep(one @s1); + @ones.grep(none $s2.words) + } + + flat uw($s1, $s2), uw($s2, $s1) +} diff --git a/challenge-266/mark-anderson/raku/ch-2.raku b/challenge-266/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..dfe6bd7110 --- /dev/null +++ b/challenge-266/mark-anderson/raku/ch-2.raku @@ -0,0 +1,195 @@ +#!/usr/bin/env raku +use JSON::Fast; +use Test; + +ok X-matrix([ + [1,0,0,2], + [0,3,4,0], + [0,5,6,0], + [7,0,0,1] + ]), + 'example 1'; + +nok X-matrix([ + [1,2,3], + [4,5,6], + [7,8,9] + ]), + 'example 2'; + +ok X-matrix([ + [1,0,2], + [0,3,0], + [4,0,5] + ]), + 'example 3'; + +ok X-matrix([ + [9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9], + [0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0], + [0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0], + [0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0], + [0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0], + [0,0,0,0,0,5,0,0,0,0,0,0,0,0,7,0,0,0,0,0], + [0,0,0,0,0,0,5,0,0,0,0,0,0,4,0,0,0,0,0,0], + [0,0,0,0,0,0,0,7,0,0,0,0,8,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,5,0,0,6,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,5,0,0,0,0,6,0,0,0,0,0,0,0], + [0,0,0,0,0,0,2,0,0,0,0,0,0,6,0,0,0,0,0,0], + [0,0,0,0,0,2,0,0,0,0,0,0,0,0,9,0,0,0,0,0], + [0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0], + [0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0], + [0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0], + [0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0], + [3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7] + ]), + '20 X 20'; + +nok X-matrix([ + [9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9], + [0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0], + [0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0], + [0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0], + [0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0], + [0,0,0,0,0,5,0,0,0,0,0,0,0,0,7,0,0,0,0,0], + [0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,7,0,0,0,0,8,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,5,0,0,6,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,5,0,0,0,0,6,0,0,0,0,0,0,0], + [0,0,0,0,0,0,2,0,0,0,0,0,0,6,0,0,0,0,0,0], + [0,0,0,0,0,2,0,0,0,0,0,0,0,0,9,0,0,0,0,0], + [0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0], + [0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0], + [0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0], + [0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0], + [3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7] + ]), + '20 X 20 diagonal zero'; + +nok X-matrix([ + [9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9], + [0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0], + [0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0], + [0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0], + [0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0], + [0,0,0,0,0,5,0,0,0,0,0,0,0,0,7,0,0,0,0,0], + [0,0,0,0,0,0,5,0,0,0,0,0,0,4,0,0,0,0,0,0], + [0,0,0,0,0,0,0,7,0,0,0,0,8,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,5,0,0,6,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,5,0,0,0,0,6,0,0,0,0,0,0,0], + [0,0,0,0,0,0,2,0,0,0,0,0,0,6,0,0,0,0,0,0], + [0,0,0,0,0,2,0,0,0,0,0,0,0,0,9,0,0,0,0,0], + [0,0,0,0,8,0,0,1,0,0,0,0,0,0,0,6,0,0,0,0], + [0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0], + [0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0], + [0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0], + [3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7] + ]), + '20 X 20 non-diagonal non-zero'; + +ok X-matrix([ + [9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7], + [0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0], + [0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0], + [0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0], + [0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0], + [0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0], + [0,0,0,0,0,0,6,0,0,0,0,0,0,0,9,0,0,0,0,0,0], + [0,0,0,0,0,0,0,9,0,0,0,0,0,7,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,7,0,0,0,9,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,0,8,0,1,0,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,4,0,0,0,0,0,2,0,0,0,0,0,0,0], + [0,0,0,0,0,0,3,0,0,0,0,0,0,0,8,0,0,0,0,0,0], + [0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0], + [0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0], + [0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0], + [0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0], + [0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0], + [8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2], + ]), + '21 X 21'; + +nok X-matrix([ + [9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7], + [0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0], + [0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0], + [0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0], + [0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0], + [0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0], + [0,0,0,0,0,0,6,0,0,0,0,0,0,0,9,0,0,0,0,0,0], + [0,0,0,0,0,0,0,9,0,0,0,0,0,7,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,7,0,0,0,9,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,0,8,0,1,0,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,4,0,0,0,0,0,2,0,0,0,0,0,0,0], + [0,0,0,0,0,0,3,0,0,0,0,0,0,0,8,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0], + [0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0], + [0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0], + [0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0], + [0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0], + [8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2], + ]), + '21 X 21 diagonal zero'; + +nok X-matrix([ + [9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7], + [0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0], + [0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0], + [0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0], + [0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0], + [0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0], + [0,0,0,0,0,0,6,0,0,0,0,0,0,0,9,0,0,0,0,0,0], + [0,0,0,0,0,0,0,9,0,0,0,0,0,7,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,7,0,0,0,9,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,0,8,0,1,0,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,5], + [0,0,0,0,0,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,0], + [0,0,0,0,0,0,0,4,0,0,0,0,0,2,0,0,0,0,0,0,0], + [0,0,0,0,0,0,3,0,0,0,0,0,0,0,8,0,0,0,0,0,0], + [0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0], + [0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0], + [0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0], + [0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0], + [0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0], + [8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2], + ]), + '21 X 21 non-diagonal non-zero'; + +sub X-matrix(+@m) +{ + my @diags = (0...@m.end) Z (@m.end...0); + + # handle the center diagonal and middle row + if @diags.end %% 2 + { + return False unless all so @m[.[0]].splice(.[1],1,0).head, + so none @m[.[0]] + given @diags.splice(@m.elems div 2,1).head + + } + + for @diags + { + return False unless all so @m[.[0]].splice(.[0],1,0).head, + so @m[.[0]].splice(.[1],1,0).head, + so none @m[.[0]] + } + + True +} -- cgit From 7e1d86c07b0e7f03524f0a6165f5bbc6a659188a Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 22 Apr 2024 09:04:19 +0000 Subject: Challenge 266 Solutions (Raku) --- challenge-266/mark-anderson/raku/ch-1.raku | 6 +++--- challenge-266/mark-anderson/raku/ch-2.raku | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/challenge-266/mark-anderson/raku/ch-1.raku b/challenge-266/mark-anderson/raku/ch-1.raku index 1f01622531..f52acbcc5f 100644 --- a/challenge-266/mark-anderson/raku/ch-1.raku +++ b/challenge-266/mark-anderson/raku/ch-1.raku @@ -1,9 +1,9 @@ #!/usr/bin/env raku use Test; -is-deeply uncommon-words('Mango is sweet', 'Mango is sour'), ('sweet', 'sour'), 'example 1'; -is-deeply uncommon-words('Mango Mango', 'Orange'), ('Orange',), 'example 2'; -is-deeply uncommon-words('Mango is Mango', 'Orange is Orange'), (), 'example 3'; +is-deeply uncommon-words('Mango is sweet', 'Mango is sour'), ('sweet', 'sour'), 'example 1'; +is-deeply uncommon-words('Mango Mango', 'Orange'), ('Orange',), 'example 2'; +is-deeply uncommon-words('Mango is Mango', 'Orange is Orange'), (), 'example 3'; sub uncommon-words($s1, $s2) { diff --git a/challenge-266/mark-anderson/raku/ch-2.raku b/challenge-266/mark-anderson/raku/ch-2.raku index dfe6bd7110..6cd5a31d7c 100644 --- a/challenge-266/mark-anderson/raku/ch-2.raku +++ b/challenge-266/mark-anderson/raku/ch-2.raku @@ -1,5 +1,4 @@ #!/usr/bin/env raku -use JSON::Fast; use Test; ok X-matrix([ -- cgit From 25f3ecf33cb9d0cec97924f690f13723db5b24aa Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 22 Apr 2024 09:15:42 +0000 Subject: Challenge 266 Solutions (Raku) --- challenge-266/mark-anderson/raku/ch-2.raku | 1 - 1 file changed, 1 deletion(-) diff --git a/challenge-266/mark-anderson/raku/ch-2.raku b/challenge-266/mark-anderson/raku/ch-2.raku index 6cd5a31d7c..683dba8b6f 100644 --- a/challenge-266/mark-anderson/raku/ch-2.raku +++ b/challenge-266/mark-anderson/raku/ch-2.raku @@ -180,7 +180,6 @@ sub X-matrix(+@m) return False unless all so @m[.[0]].splice(.[1],1,0).head, so none @m[.[0]] given @diags.splice(@m.elems div 2,1).head - } for @diags -- cgit From 06f079cc5999ea7c9c69f134a86ed4779364c411 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 22 Apr 2024 09:19:41 +0000 Subject: Challenge 266 Solutions (Raku) --- challenge-266/mark-anderson/raku/ch-2.raku | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/challenge-266/mark-anderson/raku/ch-2.raku b/challenge-266/mark-anderson/raku/ch-2.raku index 683dba8b6f..fecba82f9a 100644 --- a/challenge-266/mark-anderson/raku/ch-2.raku +++ b/challenge-266/mark-anderson/raku/ch-2.raku @@ -116,7 +116,7 @@ ok X-matrix([ [0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0], [0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0], [0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0], - [8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2], + [8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2] ]), '21 X 21'; @@ -141,7 +141,7 @@ nok X-matrix([ [0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0], [0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0], [0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0], - [8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2], + [8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2] ]), '21 X 21 diagonal zero'; @@ -166,7 +166,7 @@ nok X-matrix([ [0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0], [0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0], [0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0], - [8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2], + [8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2] ]), '21 X 21 non-diagonal non-zero'; -- cgit From ba00bedbcd6dce0c1d746d0dfc08235f7426fba7 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 22 Apr 2024 10:04:23 +0000 Subject: Challenge 266 Solutions (Raku) --- challenge-266/mark-anderson/raku/ch-2.raku | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/challenge-266/mark-anderson/raku/ch-2.raku b/challenge-266/mark-anderson/raku/ch-2.raku index fecba82f9a..e47d942ebf 100644 --- a/challenge-266/mark-anderson/raku/ch-2.raku +++ b/challenge-266/mark-anderson/raku/ch-2.raku @@ -177,9 +177,9 @@ sub X-matrix(+@m) # handle the center diagonal and middle row if @diags.end %% 2 { - return False unless all so @m[.[0]].splice(.[1],1,0).head, - so none @m[.[0]] - given @diags.splice(@m.elems div 2,1).head + return False unless all so @m[.[0]].splice(.[1],1,0).head, + so none @m[.[0]] + given @diags.splice(@m.elems div 2,1).head } for @diags -- cgit From 0d0786251e3bbad518369159ef9a357ec01981d9 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 22 Apr 2024 11:09:02 +0000 Subject: Challenge 266 Solutions (Raku) --- challenge-266/mark-anderson/raku/ch-2.raku | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/challenge-266/mark-anderson/raku/ch-2.raku b/challenge-266/mark-anderson/raku/ch-2.raku index e47d942ebf..aad59c7e67 100644 --- a/challenge-266/mark-anderson/raku/ch-2.raku +++ b/challenge-266/mark-anderson/raku/ch-2.raku @@ -177,16 +177,16 @@ sub X-matrix(+@m) # handle the center diagonal and middle row if @diags.end %% 2 { - return False unless all so @m[.[0]].splice(.[1],1,0).head, - so none @m[.[0]] + return False unless all @m[.[0]].splice(.[1],1,0).head, + none @m[.[0]] given @diags.splice(@m.elems div 2,1).head } for @diags { - return False unless all so @m[.[0]].splice(.[0],1,0).head, - so @m[.[0]].splice(.[1],1,0).head, - so none @m[.[0]] + return False unless all @m[.[0]].splice(.[0],1,0).head, + @m[.[0]].splice(.[1],1,0).head, + none @m[.[0]] } True -- cgit From d6b54fcaf75a52c3b0d282a48b78c9ffe0be7492 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 22 Apr 2024 13:41:50 +0000 Subject: Challenge 266 Solutions (Raku) --- challenge-266/mark-anderson/raku/ch-2.raku | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/challenge-266/mark-anderson/raku/ch-2.raku b/challenge-266/mark-anderson/raku/ch-2.raku index aad59c7e67..51b303c159 100644 --- a/challenge-266/mark-anderson/raku/ch-2.raku +++ b/challenge-266/mark-anderson/raku/ch-2.raku @@ -170,24 +170,22 @@ nok X-matrix([ ]), '21 X 21 non-diagonal non-zero'; +# This doesn't short circuit but I think I like it +# better than my previous solution anyway. sub X-matrix(+@m) { - my @diags = (0...@m.end) Z (@m.end...0); + my $diags := |((^@m) Z (^@m)), |((0...@m.end) Z (@m.end...0)); - # handle the center diagonal and middle row - if @diags.end %% 2 - { - return False unless all @m[.[0]].splice(.[1],1,0).head, - none @m[.[0]] - given @diags.splice(@m.elems div 2,1).head - } + my @replace = 0 xx $diags; + + @replace[@replace.elems div 4] = 1 if @m.end %% 2; - for @diags + my @diags = gather for $diags Z @replace -> ($d, $r) { - return False unless all @m[.[0]].splice(.[0],1,0).head, - @m[.[0]].splice(.[1],1,0).head, - none @m[.[0]] + my ($row, $col, $replace) = |$d, $r; + take @m[$row;$col]; + @m[$row;$col] = $replace } - True + all(all |@diags, none @m[*;*]) } -- cgit From 407e84152bc1d8a8605ef8c0b12e59350bc62345 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 22 Apr 2024 14:24:28 +0000 Subject: Challenge 266 Solutions (Raku) --- challenge-266/mark-anderson/raku/ch-2.raku | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/challenge-266/mark-anderson/raku/ch-2.raku b/challenge-266/mark-anderson/raku/ch-2.raku index 51b303c159..f0456a61b2 100644 --- a/challenge-266/mark-anderson/raku/ch-2.raku +++ b/challenge-266/mark-anderson/raku/ch-2.raku @@ -183,8 +183,7 @@ sub X-matrix(+@m) my @diags = gather for $diags Z @replace -> ($d, $r) { my ($row, $col, $replace) = |$d, $r; - take @m[$row;$col]; - @m[$row;$col] = $replace + take @m[$row].splice($col,1,$replace).head } all(all |@diags, none @m[*;*]) -- cgit From ed5b0f672e16476b861e2cacbc2acdee62c54961 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 22 Apr 2024 14:40:35 +0000 Subject: Challenge 266 Solutions (Raku) --- challenge-266/mark-anderson/raku/ch-2.raku | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/challenge-266/mark-anderson/raku/ch-2.raku b/challenge-266/mark-anderson/raku/ch-2.raku index f0456a61b2..0fa6ac70a3 100644 --- a/challenge-266/mark-anderson/raku/ch-2.raku +++ b/challenge-266/mark-anderson/raku/ch-2.raku @@ -180,11 +180,11 @@ sub X-matrix(+@m) @replace[@replace.elems div 4] = 1 if @m.end %% 2; - my @diags = gather for $diags Z @replace -> ($d, $r) + my @diags = ($diags Z @replace).map(-> ($d, $r) { my ($row, $col, $replace) = |$d, $r; - take @m[$row].splice($col,1,$replace).head - } + @m[$row].splice($col,1,$replace).head + }); all(all |@diags, none @m[*;*]) } -- cgit From 84f037baa049a84b7e64e04250a1f051365d7b05 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 22 Apr 2024 15:06:15 +0000 Subject: Challenge 266 Solutions (Raku) --- challenge-266/mark-anderson/raku/ch-2.raku | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/challenge-266/mark-anderson/raku/ch-2.raku b/challenge-266/mark-anderson/raku/ch-2.raku index 0fa6ac70a3..434b1844f4 100644 --- a/challenge-266/mark-anderson/raku/ch-2.raku +++ b/challenge-266/mark-anderson/raku/ch-2.raku @@ -180,9 +180,8 @@ sub X-matrix(+@m) @replace[@replace.elems div 4] = 1 if @m.end %% 2; - my @diags = ($diags Z @replace).map(-> ($d, $r) + my @diags = ($diags Z @replace).map(-> (($row, $col), $replace) { - my ($row, $col, $replace) = |$d, $r; @m[$row].splice($col,1,$replace).head }); -- cgit From 3d66c267df5767d31294d9181075376bc3e131d7 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:34:19 +0000 Subject: Challenge 266 Solutions (Raku) --- challenge-266/mark-anderson/raku/ch-1.raku | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge-266/mark-anderson/raku/ch-1.raku b/challenge-266/mark-anderson/raku/ch-1.raku index f52acbcc5f..9a2bbd201f 100644 --- a/challenge-266/mark-anderson/raku/ch-1.raku +++ b/challenge-266/mark-anderson/raku/ch-1.raku @@ -7,7 +7,7 @@ is-deeply uncommon-words('Mango is Mango', 'Orange is Orange'), (), sub uncommon-words($s1, $s2) { - # A literal solution using the one and none junctions + # A literal translation using the one and none junctions sub uw($s1, $s2) { my @s1 = $s1.words; -- cgit From e4bded110f948c36749cccd8429fcaa112f4c677 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 22 Apr 2024 19:25:17 +0000 Subject: Challenge 266 Solutions (Raku) --- challenge-266/mark-anderson/raku/ch-2.raku | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/challenge-266/mark-anderson/raku/ch-2.raku b/challenge-266/mark-anderson/raku/ch-2.raku index 434b1844f4..0cca03e98e 100644 --- a/challenge-266/mark-anderson/raku/ch-2.raku +++ b/challenge-266/mark-anderson/raku/ch-2.raku @@ -170,8 +170,6 @@ nok X-matrix([ ]), '21 X 21 non-diagonal non-zero'; -# This doesn't short circuit but I think I like it -# better than my previous solution anyway. sub X-matrix(+@m) { my $diags := |((^@m) Z (^@m)), |((0...@m.end) Z (@m.end...0)); @@ -185,5 +183,5 @@ sub X-matrix(+@m) @m[$row].splice($col,1,$replace).head }); - all(all |@diags, none @m[*;*]) + so all(all |@diags, none @m[*;*]) } -- cgit