diff options
| -rw-r--r-- | challenge-258/arne-sommer/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-258/arne-sommer/raku/cedn | 7 | ||||
| -rw-r--r-- | challenge-258/arne-sommer/raku/ch-1.raku | 7 | ||||
| -rw-r--r-- | challenge-258/arne-sommer/raku/ch-2.raku | 23 | ||||
| -rw-r--r-- | challenge-258/arne-sommer/raku/sum-of-values | 23 |
5 files changed, 61 insertions, 0 deletions
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; |
