aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2024-05-30 22:58:09 +0200
committerarnesom <arne@bbop.org>2024-05-30 22:58:09 +0200
commitc35c9a267d6f52ce4b4404cf356fd269ab30e977 (patch)
treedf2b01433aaa6b412afdbfea2c7b703d856d6c39
parent42052c0da5da7af10c3e456ff24ee5d3c1d14a27 (diff)
downloadperlweeklychallenge-club-c35c9a267d6f52ce4b4404cf356fd269ab30e977.tar.gz
perlweeklychallenge-club-c35c9a267d6f52ce4b4404cf356fd269ab30e977.tar.bz2
perlweeklychallenge-club-c35c9a267d6f52ce4b4404cf356fd269ab30e977.zip
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(", "), ')';
+