From 6c57247b72e69defedabf3d79baf38dec58416ec Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Mon, 8 May 2023 08:10:27 +0000 Subject: Challenge 216 Solutions (Raku) --- challenge-216/mark-anderson/raku/ch-1.raku | 12 ++++++++++++ challenge-216/mark-anderson/raku/ch-2.raku | 26 ++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 challenge-216/mark-anderson/raku/ch-1.raku create mode 100644 challenge-216/mark-anderson/raku/ch-2.raku diff --git a/challenge-216/mark-anderson/raku/ch-1.raku b/challenge-216/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..135b6a47c2 --- /dev/null +++ b/challenge-216/mark-anderson/raku/ch-1.raku @@ -0,0 +1,12 @@ +#!/usr/bin/env raku +use Test; + +is-deeply reg-num(, "AB1 2CD"), ("abcd",); +is-deeply reg-num(, "007 JB"), ; +is-deeply reg-num(, "C7 RA2"), ; + +sub reg-num($words, $reg) +{ + my $r = $reg.comb(//)>>.lc; + $words.Slip.grep({ .comb (>=) $r }) +} diff --git a/challenge-216/mark-anderson/raku/ch-2.raku b/challenge-216/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..ca3cbd6f42 --- /dev/null +++ b/challenge-216/mark-anderson/raku/ch-2.raku @@ -0,0 +1,26 @@ +#!/usr/bin/env raku +use Test; + +is word-stickers(, ), 2; +is word-stickers(, ), 3; +is word-stickers(, ), 4; +is word-stickers(, ), 0; +is word-stickers(, ), 1; +is word-stickers(, ), 18; +is word-stickers(, ), 12; +is word-stickers(, ), 15; + +sub word-stickers($s, $w) +{ + return 0 if $w.comb (-) $s.comb(//); + + my @stickers = $s>>.comb>>.Bag; + my $word = $w.comb.BagHash; + + .elems given gather while $word + { + my $i = @stickers.map({ ($_ (&) $word).total }).maxpairs.head.key + andthen .take; + $word.remove(@stickers[$i].kxxv) + } +} -- cgit