diff options
| author | Mark Anderson <mark@andemark.io> | 2025-11-10 08:54:01 +0000 |
|---|---|---|
| committer | Mark Anderson <mark@andemark.io> | 2025-11-10 08:54:01 +0000 |
| commit | 32186bfa7ab1c671ba4552a48a522e9345373dc4 (patch) | |
| tree | 907439fad558a0b56735ec6e4e9b4648290f267e | |
| parent | d945cc3d48b1284d49aba765341514707f7bee50 (diff) | |
| download | perlweeklychallenge-club-32186bfa7ab1c671ba4552a48a522e9345373dc4.tar.gz perlweeklychallenge-club-32186bfa7ab1c671ba4552a48a522e9345373dc4.tar.bz2 perlweeklychallenge-club-32186bfa7ab1c671ba4552a48a522e9345373dc4.zip | |
Challenge 347 Solutions (Raku)
| -rw-r--r-- | challenge-347/mark-anderson/raku/ch-1.raku | 21 | ||||
| -rw-r--r-- | challenge-347/mark-anderson/raku/ch-2.raku | 32 |
2 files changed, 53 insertions, 0 deletions
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(/<space>/); + + 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(/<space> | '-'/, :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) + } + } +} |
