diff options
| -rw-r--r-- | challenge-263/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-263/arne-sommer/raku/ch-1.raku | 9 | ||||
| -rwxr-xr-x | challenge-263/arne-sommer/raku/ch-2.raku | 35 | ||||
| -rwxr-xr-x | challenge-263/arne-sommer/raku/merge-items | 35 | ||||
| -rwxr-xr-x | challenge-263/arne-sommer/raku/target-index | 9 |
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(", "), ')'; |
