From 5c9fe5934a98993dce4c7ad5e17b248d47aeee2f Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Mon, 17 Nov 2025 06:26:18 +0000 Subject: Challenge 348 Solutions (Raku) --- challenge-348/mark-anderson/raku/ch-1.raku | 18 ++++++++++++++++++ challenge-348/mark-anderson/raku/ch-2.raku | 19 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 challenge-348/mark-anderson/raku/ch-1.raku create mode 100644 challenge-348/mark-anderson/raku/ch-2.raku 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) +} -- cgit