diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-07-06 23:12:58 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-06 23:12:58 +0100 |
| commit | da19831d879237f60a09da6cc2ad586c5159e5e7 (patch) | |
| tree | 253d063ca4a50dd50284684bb6c4d13ef94fd03f | |
| parent | 5bdec4d49ae89797e311113b7bff79814e32a5fe (diff) | |
| parent | 0d565674f19af4f86b87c5ace9e1cc547629650e (diff) | |
| download | perlweeklychallenge-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.raku | 31 | ||||
| -rw-r--r-- | challenge-328/wambash/raku/ch-2.raku | 18 |
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; +} |
