aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-263/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-263/arne-sommer/raku/ch-1.raku9
-rwxr-xr-xchallenge-263/arne-sommer/raku/ch-2.raku35
-rwxr-xr-xchallenge-263/arne-sommer/raku/merge-items35
-rwxr-xr-xchallenge-263/arne-sommer/raku/target-index9
5 files changed, 89 insertions, 0 deletions
diff --git a/challenge-263/arne-sommer/blog.txt b/challenge-263/arne-sommer/blog.txt
new file mode 100644
index 0000000000..b5ed3391c1
--- /dev/null
+++ b/challenge-263/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/target-merge.html
diff --git a/challenge-263/arne-sommer/raku/ch-1.raku b/challenge-263/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..8003ee7c84
--- /dev/null
+++ b/challenge-263/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,9 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Int $k,
+ *@ints where @ints.elems > 0 && all(@ints) ~~ Int,
+ :v(:$verbose));
+
+say ": Sorted: { @ints.sort.join(",") }" if $verbose;
+
+say '(', (@ints.sort.grep: $k, :k).join(", "), ')';
diff --git a/challenge-263/arne-sommer/raku/ch-2.raku b/challenge-263/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..f2a5d16297
--- /dev/null
+++ b/challenge-263/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,35 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($items1, $items2, :v(:$verbose));
+
+my @items1 = $items1.split("|")>>.words>>.Int;
+my @items2 = $items2.split("|")>>.words>>.Int;
+
+if $verbose
+{
+ say ": items1: { @items1.raku }";
+ say ": items2: { @items2.raku }";
+}
+
+my %count;
+
+for @items1 -> $item
+{
+ say ": item1 ID $item[0] with frequency $item[1]";
+ %count{$item[0]} += $item[1];
+}
+
+for @items2 -> $item
+{
+ say ": item2 ID $item[0] with frequency $item[1]";
+ %count{$item[0]} += $item[1];
+}
+
+my @output;
+
+for sort keys %count -> $key
+{
+ @output.push: ($key.Int, %count{$key});
+}
+
+say @output.raku;
diff --git a/challenge-263/arne-sommer/raku/merge-items b/challenge-263/arne-sommer/raku/merge-items
new file mode 100755
index 0000000000..f2a5d16297
--- /dev/null
+++ b/challenge-263/arne-sommer/raku/merge-items
@@ -0,0 +1,35 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($items1, $items2, :v(:$verbose));
+
+my @items1 = $items1.split("|")>>.words>>.Int;
+my @items2 = $items2.split("|")>>.words>>.Int;
+
+if $verbose
+{
+ say ": items1: { @items1.raku }";
+ say ": items2: { @items2.raku }";
+}
+
+my %count;
+
+for @items1 -> $item
+{
+ say ": item1 ID $item[0] with frequency $item[1]";
+ %count{$item[0]} += $item[1];
+}
+
+for @items2 -> $item
+{
+ say ": item2 ID $item[0] with frequency $item[1]";
+ %count{$item[0]} += $item[1];
+}
+
+my @output;
+
+for sort keys %count -> $key
+{
+ @output.push: ($key.Int, %count{$key});
+}
+
+say @output.raku;
diff --git a/challenge-263/arne-sommer/raku/target-index b/challenge-263/arne-sommer/raku/target-index
new file mode 100755
index 0000000000..8003ee7c84
--- /dev/null
+++ b/challenge-263/arne-sommer/raku/target-index
@@ -0,0 +1,9 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Int $k,
+ *@ints where @ints.elems > 0 && all(@ints) ~~ Int,
+ :v(:$verbose));
+
+say ": Sorted: { @ints.sort.join(",") }" if $verbose;
+
+say '(', (@ints.sort.grep: $k, :k).join(", "), ')';