aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetilS <kjetilskotheim@gmail.com>2025-11-19 04:25:51 +0100
committerKjetilS <kjetilskotheim@gmail.com>2025-11-19 04:25:51 +0100
commit336bfe8561edddb6f52db35d5065d0f99310207d (patch)
tree452f169325e9e7524da7116a9167ee3c752302ee
parent25572447da12014ff4f20d22dcc3260e8a906f99 (diff)
downloadperlweeklychallenge-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.pl33
-rw-r--r--challenge-348/kjetillll/perl/ch-2.pl15
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";