aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2023-04-10 22:12:01 +0100
committerGitHub <noreply@github.com>2023-04-10 22:12:01 +0100
commit5c75ee28b3915b4d74071f20586aad2f1e61dc47 (patch)
treeba40b02ca5c61bd77d211a2077b2bc1599d2e1dc
parentd00cdc0518e07a8a28508e7755dc3a0600817bc9 (diff)
parentcf3be23e3f57ca5686424c83db9cd57f6b028955 (diff)
downloadperlweeklychallenge-club-5c75ee28b3915b4d74071f20586aad2f1e61dc47.tar.gz
perlweeklychallenge-club-5c75ee28b3915b4d74071f20586aad2f1e61dc47.tar.bz2
perlweeklychallenge-club-5c75ee28b3915b4d74071f20586aad2f1e61dc47.zip
Merge pull request #7881 from andemark/challenge-212-Raku
Initial 212 (Raku)
-rw-r--r--challenge-212/mark-anderson/raku/ch-1.raku19
-rw-r--r--challenge-212/mark-anderson/raku/ch-2.raku20
2 files changed, 39 insertions, 0 deletions
diff --git a/challenge-212/mark-anderson/raku/ch-1.raku b/challenge-212/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..5ee8f53795
--- /dev/null
+++ b/challenge-212/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,19 @@
+#!/usr/bin/env raku
+use Test;
+
+is jumping-letters("Perl", (2,22,19,9)), "Raku";
+is jumping-letters("Raku", (24,4,7,17)), "Perl";
+is jumping-letters("Perl", (54,74,71,61)), "Raku";
+is jumping-letters("Raku", (76,56,59,69)), "Perl";
+
+sub jumping-letters($word, *@jump)
+{
+ sub jump($letter, $jump is copy)
+ {
+ my $adjust = $letter.ord < 97 ?? 65 !! 97;
+ $jump = ($letter.ord - $adjust + $jump) mod 26;
+ ($adjust + $jump).chr
+ }
+
+ ($word.comb Z @jump).map({ jump(.[0], .[1]) }).join
+}
diff --git a/challenge-212/mark-anderson/raku/ch-2.raku b/challenge-212/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..bbd1c60a63
--- /dev/null
+++ b/challenge-212/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,20 @@
+#!/usr/bin/env raku
+use Test;
+
+is-deeply rearrange-groups((1,2,3,5,1,2,7,6,3), 3), ((1,2,3), (1,2,3), (5,6,7));
+is-deeply rearrange-groups((1,2,3), 2), -1;
+is-deeply rearrange-groups((1,2,4,3,5,3), 2), ((1,2,3), (3,4,5));
+
+sub rearrange-groups($list, $size)
+{
+ my $s = $list / $size;
+ return -1 unless $s.narrow ~~ Int;
+ my $b = $list.BagHash;
+
+ gather while $b
+ {
+ my $sub-list = $b.sort.head($s)>>.key;
+ take $sub-list;
+ $b.remove($sub-list);
+ }
+}