From 834120b4443ed4246dd7a14f0c8529922a6ba81c Mon Sep 17 00:00:00 2001 From: arnesom Date: Fri, 1 Mar 2024 00:55:22 +0100 Subject: Arne Sommer --- challenge-258/arne-sommer/blog.txt | 1 + challenge-258/arne-sommer/raku/cedn | 7 +++++++ challenge-258/arne-sommer/raku/ch-1.raku | 7 +++++++ challenge-258/arne-sommer/raku/ch-2.raku | 23 +++++++++++++++++++++++ challenge-258/arne-sommer/raku/sum-of-values | 23 +++++++++++++++++++++++ 5 files changed, 61 insertions(+) create mode 100644 challenge-258/arne-sommer/blog.txt create mode 100644 challenge-258/arne-sommer/raku/cedn create mode 100644 challenge-258/arne-sommer/raku/ch-1.raku create mode 100644 challenge-258/arne-sommer/raku/ch-2.raku create mode 100644 challenge-258/arne-sommer/raku/sum-of-values diff --git a/challenge-258/arne-sommer/blog.txt b/challenge-258/arne-sommer/blog.txt new file mode 100644 index 0000000000..2d326e8d6e --- /dev/null +++ b/challenge-258/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/even-sum.html diff --git a/challenge-258/arne-sommer/raku/cedn b/challenge-258/arne-sommer/raku/cedn new file mode 100644 index 0000000000..f0a6becdb2 --- /dev/null +++ b/challenge-258/arne-sommer/raku/cedn @@ -0,0 +1,7 @@ +#! /usr/bin/env raku + +subset PosInt of Int where * >= 1; + +unit sub MAIN (*@ints where @ints.elems > 0 && all(@ints) ~~ PosInt); + +say @ints.grep( *.chars %% 2 ).elems; diff --git a/challenge-258/arne-sommer/raku/ch-1.raku b/challenge-258/arne-sommer/raku/ch-1.raku new file mode 100644 index 0000000000..f0a6becdb2 --- /dev/null +++ b/challenge-258/arne-sommer/raku/ch-1.raku @@ -0,0 +1,7 @@ +#! /usr/bin/env raku + +subset PosInt of Int where * >= 1; + +unit sub MAIN (*@ints where @ints.elems > 0 && all(@ints) ~~ PosInt); + +say @ints.grep( *.chars %% 2 ).elems; diff --git a/challenge-258/arne-sommer/raku/ch-2.raku b/challenge-258/arne-sommer/raku/ch-2.raku new file mode 100644 index 0000000000..28d7b62739 --- /dev/null +++ b/challenge-258/arne-sommer/raku/ch-2.raku @@ -0,0 +1,23 @@ +#! /usr/bin/env raku + +unit sub MAIN (Int $k, *@ints where @ints.elems > 0 && all(@ints) ~~ Int, :v(:$verbose)); + +my $output = 0; + +for ^@ints.elems -> $index +{ + my $binary = $index.fmt('%b'); + my $sum = $binary.comb.sum; + + if $sum == $k + { + $output += @ints[$index]; + say ":Index $index binary $binary -> $sum match - adding @ints[$index] -> $output" if $verbose; + } + elsif $verbose + { + say ":Index $index binary $binary -> $sum"; + } +} + +say $output; diff --git a/challenge-258/arne-sommer/raku/sum-of-values b/challenge-258/arne-sommer/raku/sum-of-values new file mode 100644 index 0000000000..28d7b62739 --- /dev/null +++ b/challenge-258/arne-sommer/raku/sum-of-values @@ -0,0 +1,23 @@ +#! /usr/bin/env raku + +unit sub MAIN (Int $k, *@ints where @ints.elems > 0 && all(@ints) ~~ Int, :v(:$verbose)); + +my $output = 0; + +for ^@ints.elems -> $index +{ + my $binary = $index.fmt('%b'); + my $sum = $binary.comb.sum; + + if $sum == $k + { + $output += @ints[$index]; + say ":Index $index binary $binary -> $sum match - adding @ints[$index] -> $output" if $verbose; + } + elsif $verbose + { + say ":Index $index binary $binary -> $sum"; + } +} + +say $output; -- cgit