aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-283/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-283/arne-sommer/raku/ch-1.raku10
-rwxr-xr-xchallenge-283/arne-sommer/raku/ch-2.raku27
-rwxr-xr-xchallenge-283/arne-sommer/raku/digit-count-value27
-rwxr-xr-xchallenge-283/arne-sommer/raku/unique.number10
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(",");