aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-11-07 14:23:05 +0000
committerGitHub <noreply@github.com>2023-11-07 14:23:05 +0000
commitcabba3b36ab90a7022ab644f491bcb94c50d8a5c (patch)
tree88718f05b2d948b299fd4c1529e329aab851c073
parenta82dd587d3773d2a36a1fcc4b3c525c031433a4a (diff)
parent8ec93be8b33fe93def163c382c67991d5b65b3a9 (diff)
downloadperlweeklychallenge-club-cabba3b36ab90a7022ab644f491bcb94c50d8a5c.tar.gz
perlweeklychallenge-club-cabba3b36ab90a7022ab644f491bcb94c50d8a5c.tar.bz2
perlweeklychallenge-club-cabba3b36ab90a7022ab644f491bcb94c50d8a5c.zip
Merge pull request #9008 from andemark/challenge-242
Challenge 242 Solutions (Raku)
-rw-r--r--challenge-242/mark-anderson/raku/ch-1.raku12
-rw-r--r--challenge-242/mark-anderson/raku/ch-2.raku35
2 files changed, 47 insertions, 0 deletions
diff --git a/challenge-242/mark-anderson/raku/ch-1.raku b/challenge-242/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..145d04bdc5
--- /dev/null
+++ b/challenge-242/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,12 @@
+#!/usr/bin/env raku
+use Test;
+
+is-deeply missing-members([1,2,3], [2,4,6]), ([1,3], [4,6]);
+is-deeply missing-members([1,2,3,3], [1,1,2,2]), ([3],);
+
+sub missing-members(@a, @b)
+{
+ # @a (^) @b gives the result in 1 list so I'm doing it like this 🤷
+
+ grep { .Bool }, ((@a (-) @b), (@b (-) @a))>>.keys>>.sort>>.Array
+}
diff --git a/challenge-242/mark-anderson/raku/ch-2.raku b/challenge-242/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..83a75674b6
--- /dev/null
+++ b/challenge-242/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,35 @@
+#!/usr/bin/env raku
+use Test;
+use Benchy;
+
+is-deeply flip-matrix(<1 1 0>, <1 0 1>, <0 0 0>),
+ ((1,0,0), (0,1,0), (1,1,1))>>.Seq;
+
+is-deeply flip-matrix(<1 1 0 0>, <1 0 0 1>, <0 1 1 1>, <1 0 1 0>),
+ ((1,1,0,0), (0,1,1,0), (0,0,0,1), (1,0,1,0))>>.Seq;
+
+benchmark();
+
+sub flip-matrix(+@m)
+{
+ map -> $r { map -> $c { @m[$r;$c] +^ 1 }, (@m.end...0) }, ^@m
+}
+
+sub flip-matrix-slow(+@m)
+{
+ map { reverse $_ >>+^>> 1 }, @m
+
+ # no difference in time
+ # map { .[.end...0] >>+^>> 1 }, @m
+}
+
+sub benchmark
+{
+ my @m = map { (0,1).roll(100_000) }, ^100_000;
+
+ b 10, { flip-matrix-slow(@m) }, { flip-matrix(@m) }
+
+ # Old: 3.332146938s
+ # New: 0.8259856s
+ # NEW version is 4.03x faster
+}