aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark <53903062+andemark@users.noreply.github.com>2023-11-06 06:48:37 +0000
committerMark <53903062+andemark@users.noreply.github.com>2023-11-06 06:48:37 +0000
commit7da271d93fd1cea187d7527948d029ea7e7f6398 (patch)
tree76f8ac14fbdf713f735b5209ce9fb783faee5a2f
parenta82dd587d3773d2a36a1fcc4b3c525c031433a4a (diff)
downloadperlweeklychallenge-club-7da271d93fd1cea187d7527948d029ea7e7f6398.tar.gz
perlweeklychallenge-club-7da271d93fd1cea187d7527948d029ea7e7f6398.tar.bz2
perlweeklychallenge-club-7da271d93fd1cea187d7527948d029ea7e7f6398.zip
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.raku32
2 files changed, 44 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..c83ac20266
--- /dev/null
+++ b/challenge-242/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,32 @@
+#!/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
+}
+
+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
+}