aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-05-31 10:59:21 +0100
committerGitHub <noreply@github.com>2024-05-31 10:59:21 +0100
commit5be17cafc891bb3f0a08022ccfb538a061fec8b3 (patch)
tree714bd49a633617d18f49d8b9b8f8af384ee3bf40
parent0b24f618b8f03df47929352c984dcd0e226355fb (diff)
parentc35c9a267d6f52ce4b4404cf356fd269ab30e977 (diff)
downloadperlweeklychallenge-club-5be17cafc891bb3f0a08022ccfb538a061fec8b3.tar.gz
perlweeklychallenge-club-5be17cafc891bb3f0a08022ccfb538a061fec8b3.tar.bz2
perlweeklychallenge-club-5be17cafc891bb3f0a08022ccfb538a061fec8b3.zip
Merge pull request #10182 from arnesom/branch-for-challenge-271
Arne Sommer
-rw-r--r--challenge-271/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-271/arne-sommer/raku/ch-1.raku15
-rwxr-xr-xchallenge-271/arne-sommer/raku/ch-2.raku12
-rwxr-xr-xchallenge-271/arne-sommer/raku/maximum-ones15
-rwxr-xr-xchallenge-271/arne-sommer/raku/sort-by-1-bits12
5 files changed, 55 insertions, 0 deletions
diff --git a/challenge-271/arne-sommer/blog.txt b/challenge-271/arne-sommer/blog.txt
new file mode 100644
index 0000000000..94790e4b73
--- /dev/null
+++ b/challenge-271/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/ones-by-1.html
diff --git a/challenge-271/arne-sommer/raku/ch-1.raku b/challenge-271/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..06d5f574e3
--- /dev/null
+++ b/challenge-271/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,15 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($string = "0 0 | 1 1 | 0 0", :v(:$verbose));
+
+my $matrix = $string.split("|")>>.words>>.Int>>.Array;
+
+die "The rows must have the same size" unless [==] $matrix>>.elems;
+
+die "Must contain 0s and 1s only" unless all($matrix[*;*]) ~~ one(0,1);
+
+my @sum = $matrix>>.sum.pairs.sort({ $^b.value <=> $^a.value || $^a.key <=> $^b.key });
+
+say ": index => sums: { @sum.raku } (zero based index)" if $verbose;
+
+say 1 + @sum[0].key;
diff --git a/challenge-271/arne-sommer/raku/ch-2.raku b/challenge-271/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..d95ce90546
--- /dev/null
+++ b/challenge-271/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,12 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems > 0, :v(:$verbose));
+
+die "Non-negative integers only" unless all(@ints) ~~ UInt;
+
+my @binary = @ints.map({ $_.fmt('%b').comb.sum => $_ }).sort({$^a.key <=> $^b.key || $^a.value <=> $^b.value });
+
+@binary.map({ say ": { $_.value } = { $_.key } one bits" }) if $verbose;
+
+say '(', @binary.map( *.value ).join(", "), ')';
+
diff --git a/challenge-271/arne-sommer/raku/maximum-ones b/challenge-271/arne-sommer/raku/maximum-ones
new file mode 100755
index 0000000000..06d5f574e3
--- /dev/null
+++ b/challenge-271/arne-sommer/raku/maximum-ones
@@ -0,0 +1,15 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($string = "0 0 | 1 1 | 0 0", :v(:$verbose));
+
+my $matrix = $string.split("|")>>.words>>.Int>>.Array;
+
+die "The rows must have the same size" unless [==] $matrix>>.elems;
+
+die "Must contain 0s and 1s only" unless all($matrix[*;*]) ~~ one(0,1);
+
+my @sum = $matrix>>.sum.pairs.sort({ $^b.value <=> $^a.value || $^a.key <=> $^b.key });
+
+say ": index => sums: { @sum.raku } (zero based index)" if $verbose;
+
+say 1 + @sum[0].key;
diff --git a/challenge-271/arne-sommer/raku/sort-by-1-bits b/challenge-271/arne-sommer/raku/sort-by-1-bits
new file mode 100755
index 0000000000..d95ce90546
--- /dev/null
+++ b/challenge-271/arne-sommer/raku/sort-by-1-bits
@@ -0,0 +1,12 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems > 0, :v(:$verbose));
+
+die "Non-negative integers only" unless all(@ints) ~~ UInt;
+
+my @binary = @ints.map({ $_.fmt('%b').comb.sum => $_ }).sort({$^a.key <=> $^b.key || $^a.value <=> $^b.value });
+
+@binary.map({ say ": { $_.value } = { $_.key } one bits" }) if $verbose;
+
+say '(', @binary.map( *.value ).join(", "), ')';
+