From 32186bfa7ab1c671ba4552a48a522e9345373dc4 Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Mon, 10 Nov 2025 08:54:01 +0000 Subject: Challenge 347 Solutions (Raku) --- challenge-347/mark-anderson/raku/ch-1.raku | 21 ++++++++++++++++++++ challenge-347/mark-anderson/raku/ch-2.raku | 32 ++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 challenge-347/mark-anderson/raku/ch-1.raku create mode 100644 challenge-347/mark-anderson/raku/ch-2.raku diff --git a/challenge-347/mark-anderson/raku/ch-1.raku b/challenge-347/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..840d5aa618 --- /dev/null +++ b/challenge-347/mark-anderson/raku/ch-1.raku @@ -0,0 +1,21 @@ +#!/usr/bin/env raku +use Test; + +is format-date('1st Jan 2025'), '2025-01-01'; +is format-date('22nd Feb 2025'), '2025-02-22'; +is format-date('15th Apr 2025'), '2025-04-15'; +is format-date('23rd Oct 2025'), '2025-10-23'; +is format-date('31st Dec 2025'), '2025-12-31'; + +sub format-date($str) +{ + my ($day, $month, $year) = $str.split(//); + + my %months is Map = { + :Jan(1), :Feb(2), :Mar(3), :Apr(4), + :May(5), :Jun(6), :Jul(7), :Aug(8), + :Sep(9), :Oct(10), :Nov(11), :Dec(12) + } + + ($year, %months{$month}, $day.substr(0, *-2)).fmt('%02d', '-') +} diff --git a/challenge-347/mark-anderson/raku/ch-2.raku b/challenge-347/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..6bb570ba93 --- /dev/null +++ b/challenge-347/mark-anderson/raku/ch-2.raku @@ -0,0 +1,32 @@ +#!/usr/bin/env raku +use Test; + +is format-phone-number('1-23-45-6'), '123-456'; +is format-phone-number('1234'), '12-34'; +is format-phone-number('12 345-6789'), '123-456-789'; +is format-phone-number('123 4567'), '123-45-67'; +is format-phone-number('123 456-78'), '123-456-78'; + +sub format-phone-number($str is copy) +{ + $str .= subst(/ | '-'/, :g); + + do given $str.chars % 3 + { + when 0 { + .join('-') given $str ~~ m:g/.../ + } + + when 1 { + .join('-') given flat + $str.substr(0, *-4) ~~ m:g/.../, + $str.substr( *-4) ~~ m:g/../ + } + + when 2 { + .join('-') given flat + $str.substr(0, *-2) ~~ m:g/.../, + $str.substr( *-2) + } + } +} -- cgit