From 87a17ee467b49dd156cec7571f67dfb4120159b0 Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Mon, 24 Jun 2024 12:54:34 +0000 Subject: Challenge 275 Solutions (Raku) --- challenge-275/mark-anderson/raku/ch-1.raku | 15 +++++++++++++++ challenge-275/mark-anderson/raku/ch-2.raku | 21 +++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 challenge-275/mark-anderson/raku/ch-1.raku create mode 100644 challenge-275/mark-anderson/raku/ch-2.raku diff --git a/challenge-275/mark-anderson/raku/ch-1.raku b/challenge-275/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..2fd24dc19a --- /dev/null +++ b/challenge-275/mark-anderson/raku/ch-1.raku @@ -0,0 +1,15 @@ +#!/usr/bin/env raku +use Test; + +is broken-keys("Perl Weekly Challenger", ), 0; +is broken-keys("Perl and Raku", ), 1; +is broken-keys("Well done team PWC", ), 2; +is broken-keys("The joys of polyglottism", ), 2; + +sub broken-keys +{ + my $s = $^a.fc; + my $k = $^b>>.fc; + + + $s.words.grep({ .comb.any !~~ $k.any }) +} diff --git a/challenge-275/mark-anderson/raku/ch-2.raku b/challenge-275/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..412bfea82f --- /dev/null +++ b/challenge-275/mark-anderson/raku/ch-2.raku @@ -0,0 +1,21 @@ +#!/usr/bin/env raku +use Test; + +is replace-digits('a1c1e1'), 'abcdef'; +is replace-digits('a1b2c3d4'), 'abbdcfdh'; +is replace-digits('b2b'), 'bdb'; +is replace-digits('a16z'), 'abgz'; +is replace-digits('a16bzd7'), 'abgdk'; + +sub replace-digits($s) +{ + my ($head, $tail) = $s.split(/ <.alpha>+ $ /, :v); + + my @result = do for $head.split(/\d+/, :v:skip-empty).batch(2) + { + my $char = .head ~~ / <.alpha> $ /; + $char ~ [~] .tail.comb.map({ chr($char.ord + $_) }) + } + + ([~] @result) ~ ($tail or Empty) +} -- cgit