aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-11-12 23:36:47 +0000
committerGitHub <noreply@github.com>2023-11-12 23:36:47 +0000
commit27b8f17082740a5cc74833690219e8d651b535b7 (patch)
tree481e8e337011ea58fb35f71cb0c504389f26f526
parent3cd69c12f652f3d2a71126508b4cf8d1c6f6e535 (diff)
parentcecfd0c9af5b623a2bd6eba2c83f15cac6034ac4 (diff)
downloadperlweeklychallenge-club-27b8f17082740a5cc74833690219e8d651b535b7.tar.gz
perlweeklychallenge-club-27b8f17082740a5cc74833690219e8d651b535b7.tar.bz2
perlweeklychallenge-club-27b8f17082740a5cc74833690219e8d651b535b7.zip
Merge pull request #9047 from arnesom/branch-for-challenge-242
Arne Sommer
-rw-r--r--challenge-242/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-242/arne-sommer/raku/ch-1.raku18
-rwxr-xr-xchallenge-242/arne-sommer/raku/ch-2.raku24
-rwxr-xr-xchallenge-242/arne-sommer/raku/flip-matrix24
-rwxr-xr-xchallenge-242/arne-sommer/raku/missing-members18
5 files changed, 85 insertions, 0 deletions
diff --git a/challenge-242/arne-sommer/blog.txt b/challenge-242/arne-sommer/blog.txt
new file mode 100644
index 0000000000..9ccddc4ef7
--- /dev/null
+++ b/challenge-242/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/missing-matrix.html
diff --git a/challenge-242/arne-sommer/raku/ch-1.raku b/challenge-242/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..d69dab06a8
--- /dev/null
+++ b/challenge-242/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,18 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Str $arr1, $arr2);
+
+my @arr1 = $arr1.words>>.Int;
+my @arr2 = $arr2.words>>.Int;
+
+die "@arr1: Must be integers only" unless all(@arr1) ~~ Int;
+die "@arr2: Must be integers only" unless all(@arr2) ~~ Int;
+
+my @missing2 = (@arr1 (-) @arr2).keys.sort;
+my @missing1 = (@arr2 (-) @arr1).keys.sort;
+
+print "(";
+print "[{ @missing2.join(", ") }]" if @missing2.elems;
+print ", " if @missing2.elems && @missing1.elems;
+print "[{ @missing1.join(", ") }]" if @missing1.elems;
+say ")";
diff --git a/challenge-242/arne-sommer/raku/ch-2.raku b/challenge-242/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..6a9e9c8cde
--- /dev/null
+++ b/challenge-242/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,24 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Str $matrix = "1 1 0 | 1 0 1 | 0 0 0", :v(:$verbose));
+
+my @matrix = $matrix.split("|")>>.words>>.Array;
+my @rows = @matrix>>.elems;
+
+die "Must have at least 1 row" unless @rows.elems >= 1;
+die "The rows must have the same size" unless [==] @rows;
+die "Must contain 0 and 1 only" unless all(@matrix[*;*]) eq any(0,1);
+die "Must have the same number of columns and rows" unless @rows.elems == @rows[0];
+
+my @reverse = @matrix>>.Int>>.reverse>>.Array;
+my @inverted = @reverse>>.&invert;
+
+say ": Matrix: { @matrix.raku }" if $verbose;
+say ": Reverse: { @reverse.raku }" if $verbose;
+
+say @inverted.List.raku;
+
+multi sub invert (*@bool)
+{
+ return |@bool.map( + ! * ).Array;
+}
diff --git a/challenge-242/arne-sommer/raku/flip-matrix b/challenge-242/arne-sommer/raku/flip-matrix
new file mode 100755
index 0000000000..6a9e9c8cde
--- /dev/null
+++ b/challenge-242/arne-sommer/raku/flip-matrix
@@ -0,0 +1,24 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Str $matrix = "1 1 0 | 1 0 1 | 0 0 0", :v(:$verbose));
+
+my @matrix = $matrix.split("|")>>.words>>.Array;
+my @rows = @matrix>>.elems;
+
+die "Must have at least 1 row" unless @rows.elems >= 1;
+die "The rows must have the same size" unless [==] @rows;
+die "Must contain 0 and 1 only" unless all(@matrix[*;*]) eq any(0,1);
+die "Must have the same number of columns and rows" unless @rows.elems == @rows[0];
+
+my @reverse = @matrix>>.Int>>.reverse>>.Array;
+my @inverted = @reverse>>.&invert;
+
+say ": Matrix: { @matrix.raku }" if $verbose;
+say ": Reverse: { @reverse.raku }" if $verbose;
+
+say @inverted.List.raku;
+
+multi sub invert (*@bool)
+{
+ return |@bool.map( + ! * ).Array;
+}
diff --git a/challenge-242/arne-sommer/raku/missing-members b/challenge-242/arne-sommer/raku/missing-members
new file mode 100755
index 0000000000..d69dab06a8
--- /dev/null
+++ b/challenge-242/arne-sommer/raku/missing-members
@@ -0,0 +1,18 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Str $arr1, $arr2);
+
+my @arr1 = $arr1.words>>.Int;
+my @arr2 = $arr2.words>>.Int;
+
+die "@arr1: Must be integers only" unless all(@arr1) ~~ Int;
+die "@arr2: Must be integers only" unless all(@arr2) ~~ Int;
+
+my @missing2 = (@arr1 (-) @arr2).keys.sort;
+my @missing1 = (@arr2 (-) @arr1).keys.sort;
+
+print "(";
+print "[{ @missing2.join(", ") }]" if @missing2.elems;
+print ", " if @missing2.elems && @missing1.elems;
+print "[{ @missing1.join(", ") }]" if @missing1.elems;
+say ")";