diff options
| author | Mark Anderson <mark@andemark.io> | 2025-11-17 06:26:18 +0000 |
|---|---|---|
| committer | Mark Anderson <mark@andemark.io> | 2025-11-17 06:26:18 +0000 |
| commit | 5c9fe5934a98993dce4c7ad5e17b248d47aeee2f (patch) | |
| tree | f2f300890ff3a6ba07e4dbc239941af2b06aae45 | |
| parent | 51f93bc0962522ed3bc5152f8266cc780c83f190 (diff) | |
| download | perlweeklychallenge-club-5c9fe5934a98993dce4c7ad5e17b248d47aeee2f.tar.gz perlweeklychallenge-club-5c9fe5934a98993dce4c7ad5e17b248d47aeee2f.tar.bz2 perlweeklychallenge-club-5c9fe5934a98993dce4c7ad5e17b248d47aeee2f.zip | |
Challenge 348 Solutions (Raku)
| -rw-r--r-- | challenge-348/mark-anderson/raku/ch-1.raku | 18 | ||||
| -rw-r--r-- | challenge-348/mark-anderson/raku/ch-2.raku | 19 |
2 files changed, 37 insertions, 0 deletions
diff --git a/challenge-348/mark-anderson/raku/ch-1.raku b/challenge-348/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..3c063da874 --- /dev/null +++ b/challenge-348/mark-anderson/raku/ch-1.raku @@ -0,0 +1,18 @@ +#!/usr/bin/env raku +use Test; + +nok string-alike("textbook"); +ok string-alike("book"); +ok string-alike("AbCdEfGh"); +nok string-alike("rhythmmyth"); +nok string-alike("UmpireeAudio"); + +sub string-alike($str) +{ + my $n = $str.chars div 2; + + my $left = ($str.substr(0, $n) ~~ m:g:i/< a e i o u >/).elems; + my $right = ($str.substr(*-$n) ~~ m:g:i/< a e i o u >/).elems; + + so all $left, $right, $left == $right +} diff --git a/challenge-348/mark-anderson/raku/ch-2.raku b/challenge-348/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..ec3f841cf4 --- /dev/null +++ b/challenge-348/mark-anderson/raku/ch-2.raku @@ -0,0 +1,19 @@ +#!/usr/bin/env raku +use Int::polydiv; +use Test; + +is convert-time("02:30", "02:45"), 1; +is convert-time("11:55", "12:15"), 2; +is convert-time("09:00", "13:00"), 4; +is convert-time("23:45", "00:30"), 3; +is convert-time("14:20", "15:25"), 2; + +sub convert-time($source, $target) +{ + my $s = DateTime.new("1970-01-01T$source:00"); + my $t = DateTime.new("1970-01-01T$target:00"); + + $t .= later(days => 1) if $t < $s; + + sum (($t - $s) div 60).polydiv(60,15,5,1) +} |
