Skip to content

Commit d4f7584

Browse files
authored
Merge pull request #13001 from andemark/challenge-347
Challenge 347 Solutions (Raku)
2 parents a399e14 + 5009a1e commit d4f7584

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/usr/bin/env raku
2+
use Test;
3+
4+
is format-date('1st Jan 2025'), '2025-01-01';
5+
is format-date('22nd Feb 2025'), '2025-02-22';
6+
is format-date('15th Apr 2025'), '2025-04-15';
7+
is format-date('23rd Oct 2025'), '2025-10-23';
8+
is format-date('31st Dec 2025'), '2025-12-31';
9+
10+
sub format-date($str)
11+
{
12+
my ($day, $month, $year) = $str.split(/<space>/);
13+
14+
my %months is Map = {
15+
:Jan(1), :Feb(2), :Mar(3), :Apr(4),
16+
:May(5), :Jun(6), :Jul(7), :Aug(8),
17+
:Sep(9), :Oct(10), :Nov(11), :Dec(12)
18+
}
19+
20+
($year, %months{$month}, $day.substr(0, *-2)).fmt('%02d', '-')
21+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/usr/bin/env raku
2+
use Test;
3+
4+
is format-phone-number('1-23-45-6'), '123-456';
5+
is format-phone-number('1234'), '12-34';
6+
is format-phone-number('12 345-6789'), '123-456-789';
7+
is format-phone-number('123 4567'), '123-45-67';
8+
is format-phone-number('123 456-78'), '123-456-78';
9+
10+
sub format-phone-number($phone is copy)
11+
{
12+
$phone .= subst(/<space> | '-'/, :g);
13+
14+
.join('-') given do given $phone.chars mod 3
15+
{
16+
when 0 {
17+
m:g/.../ given $phone
18+
}
19+
20+
when 1 {
21+
flat .substr(0, *-4) ~~ m:g/.../,
22+
.substr( *-4) ~~ m:g/../ given $phone
23+
}
24+
25+
when 2 {
26+
flat .substr(0, *-2) ~~ m:g/.../,
27+
.substr( *-2) given $phone
28+
}
29+
}
30+
}

0 commit comments

Comments
 (0)