diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-07-03 21:48:35 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-03 21:48:35 +0100 |
| commit | 4e6973066e081d7f6ad33bd6f15ec5ddcb48fdc7 (patch) | |
| tree | 9ed77db586be21eb95177e871eb1f08538d9f7d6 | |
| parent | 4ad759fd526ff799af698145651e5f9554aedaad (diff) | |
| parent | e806c404a755763db73864ac957b59e92ab0da2e (diff) | |
| download | perlweeklychallenge-club-4e6973066e081d7f6ad33bd6f15ec5ddcb48fdc7.tar.gz perlweeklychallenge-club-4e6973066e081d7f6ad33bd6f15ec5ddcb48fdc7.tar.bz2 perlweeklychallenge-club-4e6973066e081d7f6ad33bd6f15ec5ddcb48fdc7.zip | |
Merge pull request #12275 from kjetillll/challenge-328-kjetillll
https://theweeklychallenge.org/blog/perl-weekly-challenge-328/
| -rw-r--r-- | challenge-328/kjetillll/perl/ch-1.pl | 19 | ||||
| -rw-r--r-- | challenge-328/kjetillll/perl/ch-2.pl | 16 |
2 files changed, 35 insertions, 0 deletions
diff --git a/challenge-328/kjetillll/perl/ch-1.pl b/challenge-328/kjetillll/perl/ch-1.pl new file mode 100644 index 0000000000..00e456535f --- /dev/null +++ b/challenge-328/kjetillll/perl/ch-1.pl @@ -0,0 +1,19 @@ + +sub f { + local $_ = shift; + #idea: using negative lookbehind and negative lookahead replace ? one at a time with a, b or c until no more ? is replaced: + 1 while + s/ (?<!a) \? (?!a) /a/x or #if ? neighter has a behind nor ahead, then replace it with a + s/ (?<!b) \? (?!b) /b/x or #if ? neighter has b behind nor ahead, then replace it with b + s/ (?<!c) \? (?!c) /c/x; #if ? neighter has c behind nor ahead, then replace it with c + $_ +} + +print f("a?z") eq "abz" ? "ok\n" : "err\n"; +print f("pe?k") eq "peak" ? "ok\n" : "err\n"; +print f("gra?te") eq "grabte" ? "ok\n" : "err\n"; +print f("a?????b") eq "ababacb" ? "ok\n" : "err\n"; +print f("?a?") eq "bab" ? "ok\n" : "err\n"; +print f("?b") eq "ab" ? "ok\n" : "err\n"; +print f("b???a?") eq "babcab" ? "ok\n" : "err\n"; +print f("?") eq "a" ? "ok\n" : "err\n"; diff --git a/challenge-328/kjetillll/perl/ch-2.pl b/challenge-328/kjetillll/perl/ch-2.pl new file mode 100644 index 0000000000..fb88fd4616 --- /dev/null +++ b/challenge-328/kjetillll/perl/ch-2.pl @@ -0,0 +1,16 @@ +use v5.10; + +sub f { + state $regex_list = join '|', map { uc.lc, lc.uc } 'a' .. 'z'; #Aa|aA|Bb|bB ... Zz|zZ + my $str = shift; + 1 while $str =~ s/$regex_list//g; + $str +} + + +print f( "WeEeekly" ) eq "Weekly" ? "ok\n" : "err\n"; +print f( "abBAdD" ) eq "" ? "ok\n" : "err\n"; +print f( "abc" ) eq "abc" ? "ok\n" : "err\n"; + +#'state' instead of 'my' inits $regex_list only once even though f() is called multiple times. +#It also makes $regex_list invisible outside of sub f. Needs at least 'v5.10' for 'state' to be available. |
