aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-347/kjetillll/perl/ch-1.pl13
-rw-r--r--challenge-347/kjetillll/perl/ch-2.pl15
2 files changed, 28 insertions, 0 deletions
diff --git a/challenge-347/kjetillll/perl/ch-1.pl b/challenge-347/kjetillll/perl/ch-1.pl
new file mode 100644
index 0000000000..8505fd31cf
--- /dev/null
+++ b/challenge-347/kjetillll/perl/ch-1.pl
@@ -0,0 +1,13 @@
+
+sub f {
+ pop() =~ /^(\d+)\w* (\w\w\w )(\d{4})/ or die;
+ my $m = 1 + index('Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ', $2) / 4;
+ sprintf "$3-%02d-%02d", $m || die, $1
+}
+
+use Test::More tests => 5;
+is f("1st Jan 2025"), "2025-01-01";
+is f("22nd Feb 2025"), "2025-02-22";
+is f("15th Apr 2025"), "2025-04-15";
+is f("23rd Oct 2025"), "2025-10-23";
+is f("31st Dec 2025"), "2025-12-31";
diff --git a/challenge-347/kjetillll/perl/ch-2.pl b/challenge-347/kjetillll/perl/ch-2.pl
new file mode 100644
index 0000000000..9fbce101b1
--- /dev/null
+++ b/challenge-347/kjetillll/perl/ch-2.pl
@@ -0,0 +1,15 @@
+sub f {
+ pop()
+ =~ s/\D//gr
+ =~ s/\d{3}/$&-/gr
+ =~ s/-$//gr
+ =~ s/(\d)-(\d)$/-$1$2/gr
+}
+
+use Test::More tests => 5;
+is f("1-23-45-6"), "123-456";
+is f("1234"), "12-34";
+is f("12 345-6789"), "123-456-789";
+is f("123 4567"), "123-45-67";
+is f("123 456-78"), "123-456-78";
+