From e1648be733a48c6c5c8a76149dfcd922a3873b17 Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Mon, 21 Jul 2025 13:44:58 +0000 Subject: Challenge 331 Solutions (Raku) --- challenge-331/mark-anderson/raku/ch-1.raku | 11 +++++++++++ challenge-331/mark-anderson/raku/ch-2.raku | 23 +++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 challenge-331/mark-anderson/raku/ch-1.raku create mode 100644 challenge-331/mark-anderson/raku/ch-2.raku diff --git a/challenge-331/mark-anderson/raku/ch-1.raku b/challenge-331/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..a2bc216d54 --- /dev/null +++ b/challenge-331/mark-anderson/raku/ch-1.raku @@ -0,0 +1,11 @@ +#!/usr/bin/env raku +use Test; + +is last-word("The Weekly Challenge"), 9; +is last-word(" Hello World "), 5; +is last-word("Let's begin the fun"), 3; + +sub last-word($str) +{ + $str.words.tail.chars +} diff --git a/challenge-331/mark-anderson/raku/ch-2.raku b/challenge-331/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..229f003d8c --- /dev/null +++ b/challenge-331/mark-anderson/raku/ch-2.raku @@ -0,0 +1,23 @@ +#!/usr/bin/env raku +use Test; + +ok buddy-strings("fuck", "fcuk"); +nok buddy-strings("love", "love"); +ok buddy-strings("fodo", "food"); +ok buddy-strings("feed", "feed"); + +sub buddy-strings($s, $t) +{ + given $s.comb >>eq<< $t.comb + { + return $s.comb.Bag.values.any >= 2 if .all; + + given .grep(*.not, :k) + { + return False unless .elems == 2; + + return $s.substr(.[0], 1) ~ $s.substr(.[1], 1) eq + $t.substr(.[1], 1) ~ $t.substr(.[0], 1) + } + } +} -- cgit