aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2023-03-06 01:47:27 +0000
committerGitHub <noreply@github.com>2023-03-06 01:47:27 +0000
commit1e707ecfdb82cbcc8b5dce76759b8bc0689d2b26 (patch)
tree9369a8f3702fcb487d0d82cc6fc3250c0f976811
parentd61ee8cefe3b69e956003718697ea0f13326e0ec (diff)
parent715f3323b9adeaa0896a6b37ef6bba42a078ee0a (diff)
downloadperlweeklychallenge-club-1e707ecfdb82cbcc8b5dce76759b8bc0689d2b26.tar.gz
perlweeklychallenge-club-1e707ecfdb82cbcc8b5dce76759b8bc0689d2b26.tar.bz2
perlweeklychallenge-club-1e707ecfdb82cbcc8b5dce76759b8bc0689d2b26.zip
Merge pull request #7666 from E7-87-83/newt
Week 206
-rw-r--r--challenge-206/cheok-yin-fung/perl/ch-1.pl27
-rw-r--r--challenge-206/cheok-yin-fung/perl/ch-2.pl17
2 files changed, 44 insertions, 0 deletions
diff --git a/challenge-206/cheok-yin-fung/perl/ch-1.pl b/challenge-206/cheok-yin-fung/perl/ch-1.pl
new file mode 100644
index 0000000000..d2cd50984f
--- /dev/null
+++ b/challenge-206/cheok-yin-fung/perl/ch-1.pl
@@ -0,0 +1,27 @@
+# The Weekly Challenge 206
+# Task 1 Shortest Time
+use v5.30.0;
+use warnings;
+use List::MoreUtils qw/slide/;
+use List::Util qw/min/;
+
+sub st {
+ my @arr = map { hhmm_to_min($_) } @_;
+ @arr = sort {$a <=> $b} @arr;
+ my @diff = slide {$b-$a} @arr;
+ push @diff, $arr[0]+24*60-$arr[-1];
+ return min @diff;
+}
+
+sub hhmm_to_min {
+ my ($h, $m) = split ":", $_;
+ ($h, $m) = map { substr($_, 0, 1) eq "0"
+ ? substr($_, 1, 1)
+ : $_ } ($h, $m);
+ return $h*60+$m;
+}
+
+use Test::More tests => 3;
+ok st("00:00", "23:55", "20:00") == 5;
+ok st("01:01", "00:50", "00:57") == 4;
+ok st("10:10", "09:30", "09:00", "09:55") == 15;
diff --git a/challenge-206/cheok-yin-fung/perl/ch-2.pl b/challenge-206/cheok-yin-fung/perl/ch-2.pl
new file mode 100644
index 0000000000..9ae97d914b
--- /dev/null
+++ b/challenge-206/cheok-yin-fung/perl/ch-2.pl
@@ -0,0 +1,17 @@
+# The Weekly Challenge 206
+# Task 2 Array Pairings
+use v5.30.0;
+use warnings;
+
+sub ap {
+ my @arr = sort {$a <=> $b} @_;
+ my $sum = 0;
+ for my $i (0..($#arr-1)/2) {
+ $sum += $arr[2*$i];
+ }
+ return $sum;
+}
+
+use Test::More tests => 2;
+ok ap(1, 2, 3, 4) == 4;
+ok ap(0, 2, 1, 3) == 2;