diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2023-04-10 22:12:01 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-10 22:12:01 +0100 |
| commit | 5c75ee28b3915b4d74071f20586aad2f1e61dc47 (patch) | |
| tree | ba40b02ca5c61bd77d211a2077b2bc1599d2e1dc | |
| parent | d00cdc0518e07a8a28508e7755dc3a0600817bc9 (diff) | |
| parent | cf3be23e3f57ca5686424c83db9cd57f6b028955 (diff) | |
| download | perlweeklychallenge-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.raku | 19 | ||||
| -rw-r--r-- | challenge-212/mark-anderson/raku/ch-2.raku | 20 |
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); + } +} |
