From 880fa7e6b98f0cdf298655b839026b0de6d0a317 Mon Sep 17 00:00:00 2001 From: Andrew Shitov Date: Mon, 19 May 2025 08:50:34 +0200 Subject: Solutions Week 322 in Raku by @ash --- challenge-322/ash/raku/ch-1.raku | 14 ++++++++++++++ challenge-322/ash/raku/ch-2.raku | 12 ++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 challenge-322/ash/raku/ch-1.raku create mode 100644 challenge-322/ash/raku/ch-2.raku diff --git a/challenge-322/ash/raku/ch-1.raku b/challenge-322/ash/raku/ch-1.raku new file mode 100644 index 0000000000..a54b060bfe --- /dev/null +++ b/challenge-322/ash/raku/ch-1.raku @@ -0,0 +1,14 @@ +# Task 1 of the Weekly Challenge 322 +# https://theweeklychallenge.org/blog/perl-weekly-challenge-322/#TASK1 + +say split-groups('ABC-D-E-F', 3); # ABC-DEF +say split-groups('A-BC-D-E', 2); # A-BC-DE +say split-groups('-A-B-CD-E', 4); # A-BCDE + +sub split-groups($str is copy, $i) { + $str ~~ s:g/\W//; + + $str ~~ s/ (\w) (\w**{$i} ('-' | $)) /$0-$1/ while $str ~~ /^\w**{$i + 1}/; + + return $str; +} diff --git a/challenge-322/ash/raku/ch-2.raku b/challenge-322/ash/raku/ch-2.raku new file mode 100644 index 0000000000..5d15aee2f6 --- /dev/null +++ b/challenge-322/ash/raku/ch-2.raku @@ -0,0 +1,12 @@ +# Task 2 of the Weekly Challenge 322 +# https://theweeklychallenge.org/blog/perl-weekly-challenge-322/#TASK2 + +say rank 55, 22, 44, 33; # (4 1 3 2) +say rank 10, 10, 10; # (1 1 1) +say rank 5, 1, 1, 4, 3; # (4, 1, 1, 3, 2) + +sub rank(*@ints) { + my %rank = @ints.sort.unique.kv.reverse; + + return @ints.map({%rank{$_} + 1}); +} -- cgit