aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlibrasteve <librasteve@furnival.net>2023-11-07 20:10:58 +0000
committerlibrasteve <librasteve@furnival.net>2023-11-07 20:10:58 +0000
commitc9d5f2834f979267d8d5db8fdaba52504a0c0b95 (patch)
treec05126dc23f84f4f82952ff5d376b0a5e3287d20
parenta82dd587d3773d2a36a1fcc4b3c525c031433a4a (diff)
downloadperlweeklychallenge-club-c9d5f2834f979267d8d5db8fdaba52504a0c0b95.tar.gz
perlweeklychallenge-club-c9d5f2834f979267d8d5db8fdaba52504a0c0b95.tar.bz2
perlweeklychallenge-club-c9d5f2834f979267d8d5db8fdaba52504a0c0b95.zip
242 solution
-rw-r--r--challenge-242/librasteve/raku/ch-1.raku25
-rw-r--r--challenge-242/librasteve/raku/ch-2.raku23
2 files changed, 48 insertions, 0 deletions
diff --git a/challenge-242/librasteve/raku/ch-1.raku b/challenge-242/librasteve/raku/ch-1.raku
new file mode 100644
index 0000000000..b55852d077
--- /dev/null
+++ b/challenge-242/librasteve/raku/ch-1.raku
@@ -0,0 +1,25 @@
+use Data::Dump::Tree;
+use Test;
+
+my @tests = [
+ %(
+ arr1 => (1,2,3),
+ arr2 => (2,4,6),
+ ),
+ %(
+ arr1 => (1,2,3,3),
+ arr2 => (1,1,2,2),
+ ),
+];
+
+sub run( @arrs ) {
+
+ sub missing( [@haystack, @needle] ) {
+ [(@needle ∖ @haystack).keys] || |[Empty] # Set difference
+ }
+
+ ($_, $_.reverse).map(*.&missing) given @arrs
+
+}
+
+say run([.<arr1>, .<arr2>]) for @tests;
diff --git a/challenge-242/librasteve/raku/ch-2.raku b/challenge-242/librasteve/raku/ch-2.raku
new file mode 100644
index 0000000000..4cf11bba8c
--- /dev/null
+++ b/challenge-242/librasteve/raku/ch-2.raku
@@ -0,0 +1,23 @@
+use Data::Dump::Tree;
+use Math::Matrix :MM;
+use Test;
+
+
+my @tests = [
+ %(
+ matrix => ([1, 1, 0], [0, 1, 1], [0, 0, 1]),
+ ),
+ %(
+ matrix => ([1, 1, 0], [1, 0, 1], [0, 0, 0]),
+ ),
+ %(
+ matrix => ([1, 1, 0, 0], [1, 0, 0, 1], [0, 1, 1, 1], [1, 0, 1, 0]),
+ ),
+];
+
+sub run( @matrix ) {
+ my @nm = @matrix.map(*.reverse.map(+*.not));
+ MM @nm
+}
+
+say run(.<matrix>) for @tests