diff options
| author | KjetilS <kjetilskotheim@gmail.com> | 2025-11-19 04:25:51 +0100 |
|---|---|---|
| committer | KjetilS <kjetilskotheim@gmail.com> | 2025-11-19 04:25:51 +0100 |
| commit | 336bfe8561edddb6f52db35d5065d0f99310207d (patch) | |
| tree | 452f169325e9e7524da7116a9167ee3c752302ee | |
| parent | 25572447da12014ff4f20d22dcc3260e8a906f99 (diff) | |
| download | perlweeklychallenge-club-336bfe8561edddb6f52db35d5065d0f99310207d.tar.gz perlweeklychallenge-club-336bfe8561edddb6f52db35d5065d0f99310207d.tar.bz2 perlweeklychallenge-club-336bfe8561edddb6f52db35d5065d0f99310207d.zip | |
https://theweeklychallenge.org/blog/perl-weekly-challenge-348/
| -rw-r--r-- | challenge-348/kjetillll/perl/ch-1.pl | 33 | ||||
| -rw-r--r-- | challenge-348/kjetillll/perl/ch-2.pl | 15 |
2 files changed, 48 insertions, 0 deletions
diff --git a/challenge-348/kjetillll/perl/ch-1.pl b/challenge-348/kjetillll/perl/ch-1.pl new file mode 100644 index 0000000000..389d2b6dd5 --- /dev/null +++ b/challenge-348/kjetillll/perl/ch-1.pl @@ -0,0 +1,33 @@ + +sub f { shift() =~ /^(.)(.*)(.)$/ ? f( $2, map /[aeiou]/i + shift(), $1, $3) : $_[0]>0 && shift() == shift() } + +sub f_verbose { #same thing more verbose + use strict; use warnings; + my($str, $count_vowels_left, $count_vowels_right) = (@_,0,0); + + if( $str =~ s/^(.)(.*)(.)$/$2/ ){ + my($left_char, $middle_string, $right_char) = ($1,$2,$3); + return f_verbose( $middle_string, + $count_vowels_left + ( $left_char =~ /[aeiou]/i ? 1 : 0 ), + $count_vowels_right + ( $right_char =~ /[aeiou]/i ? 1 : 0 ) ) + } + else { + return $count_vowels_left > 0 && $count_vowels_left == $count_vowels_right + } +} + +use Test::More; + +ok f("textbook") == 0; +ok f("book") == 1; +ok f("AbCdEfGh") == 1; +ok f("rhythmmyth") == 0; +ok f("UmpireeAudio") == 0; + +ok f_verbose("textbook") == 0; +ok f_verbose("book") == 1; +ok f_verbose("AbCdEfGh") == 1; +ok f_verbose("rhythmmyth") == 0; +ok f_verbose("UmpireeAudio") == 0; + +done_testing; diff --git a/challenge-348/kjetillll/perl/ch-2.pl b/challenge-348/kjetillll/perl/ch-2.pl new file mode 100644 index 0000000000..434061308e --- /dev/null +++ b/challenge-348/kjetillll/perl/ch-2.pl @@ -0,0 +1,15 @@ +sub f { + my($source, $target, $count) = map { /(\d+):(\d+)/ ? $1 * 60 + $2 : $_ } @_, 0; + $source > $target ? f( $source, $target + 24 * 60, 0 ) : + $source <= $target - 60 ? f( $source, $target - 60, $count + 1 ) : + $source <= $target - 15 ? f( $source, $target - 15, $count + 1 ) : + $source <= $target - 5 ? f( $source, $target - 5, $count + 1 ) : + $source <= $target - 1 ? f( $source, $target - 1, $count + 1 ) : + $count +} + +print f("02:30", "02:45") == 1 ? "ok\n" : "error\n"; +print f("11:55", "12:15") == 2 ? "ok\n" : "error\n"; +print f("09:00", "13:00") == 4 ? "ok\n" : "error\n"; +print f("23:45", "00:30") == 3 ? "ok\n" : "error\n"; +print f("14:20", "15:25") == 2 ? "ok\n" : "error\n"; |
