aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2023-05-20 20:43:19 +0100
committerGitHub <noreply@github.com>2023-05-20 20:43:19 +0100
commit006cdc758e6d8a0a8cd07b09eeb8d0b55f7fc797 (patch)
treec62090977b6d8dd5430d31de40153c1203b80ea5
parent0fb8759b8a985c5b5900bf45200c2dddda4789fc (diff)
parent251b0c15df5a38212b602987ca2d9d6b8acb4f1b (diff)
downloadperlweeklychallenge-club-006cdc758e6d8a0a8cd07b09eeb8d0b55f7fc797.tar.gz
perlweeklychallenge-club-006cdc758e6d8a0a8cd07b09eeb8d0b55f7fc797.tar.bz2
perlweeklychallenge-club-006cdc758e6d8a0a8cd07b09eeb8d0b55f7fc797.zip
Merge pull request #8107 from arnesom/branch-for-challenge-217
Arne Sommer
-rw-r--r--challenge-217/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-217/arne-sommer/raku/ch-1.raku16
-rwxr-xr-xchallenge-217/arne-sommer/raku/ch-2.raku11
-rwxr-xr-xchallenge-217/arne-sommer/raku/max-number11
-rwxr-xr-xchallenge-217/arne-sommer/raku/max-number-arm13
-rwxr-xr-xchallenge-217/arne-sommer/raku/max-number-leg5
-rwxr-xr-xchallenge-217/arne-sommer/raku/sorted-matrix16
-rwxr-xr-xchallenge-217/arne-sommer/raku/sorted-matrix-cheat5
8 files changed, 78 insertions, 0 deletions
diff --git a/challenge-217/arne-sommer/blog.txt b/challenge-217/arne-sommer/blog.txt
new file mode 100644
index 0000000000..12c692a5c1
--- /dev/null
+++ b/challenge-217/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/ma-tri-x.html
diff --git a/challenge-217/arne-sommer/raku/ch-1.raku b/challenge-217/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..f8fd5aea49
--- /dev/null
+++ b/challenge-217/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,16 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Str $matrix = "3 1 2 | 5 2 4 | 0 1 3", :v(:$verbose));
+
+my @matrix = $matrix.split("|")>>.words;
+my @size = @matrix>>.elems;
+
+die "Must have at least 2 rows" unless @size.elems >= 2;
+die "The rows must have the same size" unless [==] @size;
+die "The number of columns and rows must be the same" unless @size[0] == @size.elems;
+
+my @sorted = @matrix[*;*].sort;
+
+say ":Sorted: { @sorted.join(",") }" if $verbose;
+
+say @sorted[2];
diff --git a/challenge-217/arne-sommer/raku/ch-2.raku b/challenge-217/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..d42b56e06a
--- /dev/null
+++ b/challenge-217/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,11 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@list where @list.elems > 0 && all(@list) ~~ /^<[1..9]><[0..9]>*$/, :v(:$verbose));
+
+my @permutations = @list.permutations;
+my @values = @permutations>>.join;
+
+say ":Permutations: ", @permutations if $verbose;
+say ":Values: ", @values if $verbose;
+
+say @values.max;
diff --git a/challenge-217/arne-sommer/raku/max-number b/challenge-217/arne-sommer/raku/max-number
new file mode 100755
index 0000000000..d42b56e06a
--- /dev/null
+++ b/challenge-217/arne-sommer/raku/max-number
@@ -0,0 +1,11 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@list where @list.elems > 0 && all(@list) ~~ /^<[1..9]><[0..9]>*$/, :v(:$verbose));
+
+my @permutations = @list.permutations;
+my @values = @permutations>>.join;
+
+say ":Permutations: ", @permutations if $verbose;
+say ":Values: ", @values if $verbose;
+
+say @values.max;
diff --git a/challenge-217/arne-sommer/raku/max-number-arm b/challenge-217/arne-sommer/raku/max-number-arm
new file mode 100755
index 0000000000..8c95030c1c
--- /dev/null
+++ b/challenge-217/arne-sommer/raku/max-number-arm
@@ -0,0 +1,13 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@list where @list.elems > 0 && all(@list) ~~ /^<[1..9]><[0..9]>*$/);
+
+say @list.sort(&arm).join;
+
+sub arm ($a, $b)
+{
+ return False if $b.substr(0, $a.chars) eq $a && $b.substr($a.end +1,1) eq '0';
+ return True if $a.substr(0, $b.chars) eq $b && $a.substr($b.end +1,1) eq '0';
+
+ return $b leg $a;
+}
diff --git a/challenge-217/arne-sommer/raku/max-number-leg b/challenge-217/arne-sommer/raku/max-number-leg
new file mode 100755
index 0000000000..bc180f56e6
--- /dev/null
+++ b/challenge-217/arne-sommer/raku/max-number-leg
@@ -0,0 +1,5 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@list where @list.elems > 0 && all(@list) ~~ /^<[1..9]><[0..9]>*$/);
+
+say @list.sort({ $^b leg $^a }).join;
diff --git a/challenge-217/arne-sommer/raku/sorted-matrix b/challenge-217/arne-sommer/raku/sorted-matrix
new file mode 100755
index 0000000000..f8fd5aea49
--- /dev/null
+++ b/challenge-217/arne-sommer/raku/sorted-matrix
@@ -0,0 +1,16 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Str $matrix = "3 1 2 | 5 2 4 | 0 1 3", :v(:$verbose));
+
+my @matrix = $matrix.split("|")>>.words;
+my @size = @matrix>>.elems;
+
+die "Must have at least 2 rows" unless @size.elems >= 2;
+die "The rows must have the same size" unless [==] @size;
+die "The number of columns and rows must be the same" unless @size[0] == @size.elems;
+
+my @sorted = @matrix[*;*].sort;
+
+say ":Sorted: { @sorted.join(",") }" if $verbose;
+
+say @sorted[2];
diff --git a/challenge-217/arne-sommer/raku/sorted-matrix-cheat b/challenge-217/arne-sommer/raku/sorted-matrix-cheat
new file mode 100755
index 0000000000..c94bbff49f
--- /dev/null
+++ b/challenge-217/arne-sommer/raku/sorted-matrix-cheat
@@ -0,0 +1,5 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Str $matrix = "3 1 2 | 5 2 4 | 0 1 3");
+
+say $matrix.words.grep( * !~~ /\|/ )>>.Int.sort[2];