aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-07-06 23:12:58 +0100
committerGitHub <noreply@github.com>2025-07-06 23:12:58 +0100
commitda19831d879237f60a09da6cc2ad586c5159e5e7 (patch)
tree253d063ca4a50dd50284684bb6c4d13ef94fd03f
parent5bdec4d49ae89797e311113b7bff79814e32a5fe (diff)
parent0d565674f19af4f86b87c5ace9e1cc547629650e (diff)
downloadperlweeklychallenge-club-da19831d879237f60a09da6cc2ad586c5159e5e7.tar.gz
perlweeklychallenge-club-da19831d879237f60a09da6cc2ad586c5159e5e7.tar.bz2
perlweeklychallenge-club-da19831d879237f60a09da6cc2ad586c5159e5e7.zip
Merge pull request #12294 from wambash/challenge-week-328
solutions week 328
-rw-r--r--challenge-328/wambash/raku/ch-1.raku31
-rw-r--r--challenge-328/wambash/raku/ch-2.raku18
2 files changed, 49 insertions, 0 deletions
diff --git a/challenge-328/wambash/raku/ch-1.raku b/challenge-328/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..343900b676
--- /dev/null
+++ b/challenge-328/wambash/raku/ch-1.raku
@@ -0,0 +1,31 @@
+#!/usr/bin/env raku
+
+
+sub replace-iter ($str) {
+ $str
+ andthen .subst: / <-[a]> <( '?' )> <-[a]> /, 'a', :g
+ andthen .subst: / a <( '?' )> b | b <( '?' )> a /, 'c', :g
+ andthen .subst: / a <( '?' | '?' )> a /, 'b'
+}
+
+sub replace-all ($str) {
+ $str, &replace-iter ... !*.contains('?')
+ andthen .tail
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is replace-iter('a?z'), 'abz';
+ is-deeply replace-all('a?z'), 'abz';
+ is-deeply replace-all('a???b'), 'abacb';
+ is-deeply replace-all('???a'), 'baba';
+ is-deeply replace-all('a??a'), 'abca';
+ is replace-iter('pe?k'), 'peak';
+ is replace-iter('gra?te'), 'grabte';
+ is replace-iter('a?b'), 'acb';
+ done-testing;
+}
+
+multi MAIN ($str) {
+ say replace-all $str;
+}
diff --git a/challenge-328/wambash/raku/ch-2.raku b/challenge-328/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..cf5a4737a9
--- /dev/null
+++ b/challenge-328/wambash/raku/ch-2.raku
@@ -0,0 +1,18 @@
+#!/usr/bin/env raku
+
+sub good-string (+str) {
+ str.subst: / (<:Lu>) <~~>* <{lc $0}> | (<:Ll>) <~~>* <{uc $0}> /, :g
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is good-string('WeEeekly'), 'Weekly';
+ is good-string('abBAdD'), '';
+ is good-string('abc'), 'abc';
+ is good-string('xAayeBCcdDbEz'), 'xyz';
+ done-testing;
+}
+
+multi MAIN ($str) {
+ say good-string $str;
+}