diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2023-03-06 01:47:27 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-06 01:47:27 +0000 |
| commit | 1e707ecfdb82cbcc8b5dce76759b8bc0689d2b26 (patch) | |
| tree | 9369a8f3702fcb487d0d82cc6fc3250c0f976811 | |
| parent | d61ee8cefe3b69e956003718697ea0f13326e0ec (diff) | |
| parent | 715f3323b9adeaa0896a6b37ef6bba42a078ee0a (diff) | |
| download | perlweeklychallenge-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.pl | 27 | ||||
| -rw-r--r-- | challenge-206/cheok-yin-fung/perl/ch-2.pl | 17 |
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; |
