aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Krňávek <Jan.Krnavek@gmail.com>2025-05-24 20:26:30 +0200
committerJan Krňávek <Jan.Krnavek@gmail.com>2025-05-24 20:26:30 +0200
commitc84fa3a7f7e470844a68a46788cb616194d7318f (patch)
treee72f990f1a53400cc1a8e4ca7785ddece24be2b6
parentd9a8a0d7aba084dc687dd97473f8739db9387b5c (diff)
downloadperlweeklychallenge-club-c84fa3a7f7e470844a68a46788cb616194d7318f.tar.gz
perlweeklychallenge-club-c84fa3a7f7e470844a68a46788cb616194d7318f.tar.bz2
perlweeklychallenge-club-c84fa3a7f7e470844a68a46788cb616194d7318f.zip
solutions week 322
-rw-r--r--challenge-322/wambash/raku/ch-1.raku23
-rw-r--r--challenge-322/wambash/raku/ch-2.raku19
2 files changed, 42 insertions, 0 deletions
diff --git a/challenge-322/wambash/raku/ch-1.raku b/challenge-322/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..657faeaa3a
--- /dev/null
+++ b/challenge-322/wambash/raku/ch-1.raku
@@ -0,0 +1,23 @@
+#!/usr/bin/env raku
+
+sub string-format ($str,:$i=3) {
+ $str
+ andthen .comb: /<-[-]>/
+ andthen .reverse
+ andthen .batch: $i
+ andthen .map: *.reverse.join
+ andthen .reverse
+ andthen .join: '-'
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is string-format('ABC-D-E-F',:3i), 'ABC-DEF';
+ is string-format('A-BC-D-E',:2i), 'A-BC-DE';
+ is string-format('A-B-CD-E',:4i), 'A-BCDE';
+ done-testing;
+}
+
+multi MAIN ($str,:$i=3) {
+ say string-format $str,:$i;
+}
diff --git a/challenge-322/wambash/raku/ch-2.raku b/challenge-322/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..4b22eca1df
--- /dev/null
+++ b/challenge-322/wambash/raku/ch-2.raku
@@ -0,0 +1,19 @@
+#!/usr/bin/env raku
+
+sub rank-array (+ints) {
+ my %ranks := %( ints.sort.squish.antipairs );
+
+ ints.map: { %ranks{$_} + 1 }
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is rank-array(55,22,44,33), (4,1,3,2);
+ is rank-array(10,10,10), (1,1,1);
+ is rank-array(5,1,1,4,3), (4,1,1,3,2);
+ done-testing;
+}
+
+multi MAIN (+ints) {
+ put rank-array ints;
+}