From cf3be23e3f57ca5686424c83db9cd57f6b028955 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 10 Apr 2023 11:37:41 +0000 Subject: Initial 212 (Raku) --- challenge-212/mark-anderson/raku/ch-1.raku | 19 +++++++++++++++++++ challenge-212/mark-anderson/raku/ch-2.raku | 20 ++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 challenge-212/mark-anderson/raku/ch-1.raku create mode 100644 challenge-212/mark-anderson/raku/ch-2.raku 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); + } +} -- cgit