diff options
| -rw-r--r-- | challenge-283/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-283/arne-sommer/raku/ch-1.raku | 10 | ||||
| -rwxr-xr-x | challenge-283/arne-sommer/raku/ch-2.raku | 27 | ||||
| -rwxr-xr-x | challenge-283/arne-sommer/raku/digit-count-value | 27 | ||||
| -rwxr-xr-x | challenge-283/arne-sommer/raku/unique.number | 10 |
5 files changed, 75 insertions, 0 deletions
diff --git a/challenge-283/arne-sommer/blog.txt b/challenge-283/arne-sommer/blog.txt new file mode 100644 index 0000000000..ed6de85091 --- /dev/null +++ b/challenge-283/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/numbers-values.html diff --git a/challenge-283/arne-sommer/raku/ch-1.raku b/challenge-283/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..371dd3e09a --- /dev/null +++ b/challenge-283/arne-sommer/raku/ch-1.raku @@ -0,0 +1,10 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where all(@ints) ~~ Int && @ints.elems > 0, + :v(:$verbose)); + +my $bag = @ints>>.Int.Bag; + +say ": Bag { $bag.rakuĀ }" if $verbose; + +say $bag.grep(*.value == 1)>>.key.sort.join(","); diff --git a/challenge-283/arne-sommer/raku/ch-2.raku b/challenge-283/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..56c563b0f4 --- /dev/null +++ b/challenge-283/arne-sommer/raku/ch-2.raku @@ -0,0 +1,27 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where all(@ints) ~~ UInt && @ints.elems > 0, + :a(:$all), + :v(:$verbose) = $all); + +my $bag = @ints>>.Int.Bag; +my $status = True; + +say ": Bag: { $bag.raku }" if $verbose; + +for ^@ints.elems -> $index +{ + my $val = @ints[$index]; + my $count = $bag{$index}; + + my $is-ok = $val == $count; + say ": \@ints[{ $index }] = { $val }, the digit { $index } occurs { $count } time(s) | { $is-ok ?? "OK" !! "Not OK" }" if $verbose; + + unless $is-ok + { + $status = False; + last unless $all; + } +} + +say $status; diff --git a/challenge-283/arne-sommer/raku/digit-count-value b/challenge-283/arne-sommer/raku/digit-count-value new file mode 100755 index 0000000000..56c563b0f4 --- /dev/null +++ b/challenge-283/arne-sommer/raku/digit-count-value @@ -0,0 +1,27 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where all(@ints) ~~ UInt && @ints.elems > 0, + :a(:$all), + :v(:$verbose) = $all); + +my $bag = @ints>>.Int.Bag; +my $status = True; + +say ": Bag: { $bag.raku }" if $verbose; + +for ^@ints.elems -> $index +{ + my $val = @ints[$index]; + my $count = $bag{$index}; + + my $is-ok = $val == $count; + say ": \@ints[{ $index }] = { $val }, the digit { $index } occurs { $count } time(s) | { $is-ok ?? "OK" !! "Not OK" }" if $verbose; + + unless $is-ok + { + $status = False; + last unless $all; + } +} + +say $status; diff --git a/challenge-283/arne-sommer/raku/unique.number b/challenge-283/arne-sommer/raku/unique.number new file mode 100755 index 0000000000..371dd3e09a --- /dev/null +++ b/challenge-283/arne-sommer/raku/unique.number @@ -0,0 +1,10 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where all(@ints) ~~ Int && @ints.elems > 0, + :v(:$verbose)); + +my $bag = @ints>>.Int.Bag; + +say ": Bag { $bag.rakuĀ }" if $verbose; + +say $bag.grep(*.value == 1)>>.key.sort.join(","); |
