diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-05-31 10:59:21 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-31 10:59:21 +0100 |
| commit | 5be17cafc891bb3f0a08022ccfb538a061fec8b3 (patch) | |
| tree | 714bd49a633617d18f49d8b9b8f8af384ee3bf40 | |
| parent | 0b24f618b8f03df47929352c984dcd0e226355fb (diff) | |
| parent | c35c9a267d6f52ce4b4404cf356fd269ab30e977 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-271/arne-sommer/raku/ch-1.raku | 15 | ||||
| -rwxr-xr-x | challenge-271/arne-sommer/raku/ch-2.raku | 12 | ||||
| -rwxr-xr-x | challenge-271/arne-sommer/raku/maximum-ones | 15 | ||||
| -rwxr-xr-x | challenge-271/arne-sommer/raku/sort-by-1-bits | 12 |
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(", "), ')'; + |
