diff options
| author | Mark <53903062+andemark@users.noreply.github.com> | 2023-12-11 05:32:00 +0000 |
|---|---|---|
| committer | Mark <53903062+andemark@users.noreply.github.com> | 2023-12-11 05:32:00 +0000 |
| commit | 86b40a444f6ad097e863471eb41738fdc304e255 (patch) | |
| tree | 3c395702c21faa37c16d331b70263a43ecfcdfe8 | |
| parent | 98df168725aa587bd4db1e24018dae1ca77b29da (diff) | |
| download | perlweeklychallenge-club-86b40a444f6ad097e863471eb41738fdc304e255.tar.gz perlweeklychallenge-club-86b40a444f6ad097e863471eb41738fdc304e255.tar.bz2 perlweeklychallenge-club-86b40a444f6ad097e863471eb41738fdc304e255.zip | |
Challenge 247 Solutions (Raku)
| -rw-r--r-- | challenge-247/mark-anderson/raku/ch-1.raku | 36 | ||||
| -rw-r--r-- | challenge-247/mark-anderson/raku/ch-2.raku | 10 |
2 files changed, 46 insertions, 0 deletions
diff --git a/challenge-247/mark-anderson/raku/ch-1.raku b/challenge-247/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..92ae775140 --- /dev/null +++ b/challenge-247/mark-anderson/raku/ch-1.raku @@ -0,0 +1,36 @@ +#!/usr/bin/env raku +use Test; + +is-deeply secret-santa(["Mr. Wall", "Mrs. Wall", "Mr. Anwar", + "Mrs. Anwar", "Mr. Conway", "Mr. Cross"]), + { + "Mrs. Anwar" => "Mr. Conway", + "Mr. Conway" => "Mr. Cross", + "Mr. Cross" => "Mrs. Wall", + "Mrs. Wall" => "Mr. Anwar", + "Mr. Anwar" => "Mr. Wall", + "Mr. Wall" => "Mrs. Anwar" + } + +is-deeply secret-santa(["Mr. Wall", "Mrs. Wall", "Mr. Anwar"]), + { + "Mr. Anwar" => "Mrs. Wall", + "Mr. Wall" => "Mr. Anwar", + "Mrs. Wall" => "Mr. Wall" + } + +sub secret-santa(@names) +{ + my %surname = @names.classify({ .words[1] }); + + my @r = gather given %surname.values.sort.Array + { + while .elems + { + take .head.pop; + .head ?? $_ .= rotate !! .splice(0,1) + } + } + + @r.push(@r.head).rotor(2 => -1).map({ .pairup.head }).Hash +} diff --git a/challenge-247/mark-anderson/raku/ch-2.raku b/challenge-247/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..532186b18e --- /dev/null +++ b/challenge-247/mark-anderson/raku/ch-2.raku @@ -0,0 +1,10 @@ +#!/usr/bin/env raku +use Test; + +is most-freq-pair("abcdbca"), "bc"; +is most-freq-pair("cdeabeabfcdfabgcd"), "ab"; + +sub most-freq-pair($str) +{ + ($str ~~ m:ov/../)>>.Str.Bag.maxpairs.sort.head.key +} |
