aboutsummaryrefslogtreecommitdiff
path: root/challenge-050/mohammad-anwar
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-03-03 17:42:00 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-03-03 17:42:00 +0000
commitb1213358b8db463111fed3ce1e654148e8f9b124 (patch)
treea0075b47734d4f6e4c55209ace18b939dfc64946 /challenge-050/mohammad-anwar
parent0bfc3b6fd27ff30753337847ef3f27bcb7fd69a1 (diff)
downloadperlweeklychallenge-club-b1213358b8db463111fed3ce1e654148e8f9b124.tar.gz
perlweeklychallenge-club-b1213358b8db463111fed3ce1e654148e8f9b124.tar.bz2
perlweeklychallenge-club-b1213358b8db463111fed3ce1e654148e8f9b124.zip
- Further bug fixed.
Diffstat (limited to 'challenge-050/mohammad-anwar')
-rw-r--r--challenge-050/mohammad-anwar/perl/ch-1.pl28
1 files changed, 19 insertions, 9 deletions
diff --git a/challenge-050/mohammad-anwar/perl/ch-1.pl b/challenge-050/mohammad-anwar/perl/ch-1.pl
index 494d76e43f..36e37d9f34 100644
--- a/challenge-050/mohammad-anwar/perl/ch-1.pl
+++ b/challenge-050/mohammad-anwar/perl/ch-1.pl
@@ -3,19 +3,22 @@
use strict;
use warnings;
-use Test::More tests => 5;
+use Test::More tests => 6;
use Test::Deep;
cmp_deeply( merge_intervals( [ [1, 12], [7, 8], [12, 14], [15, 19] ] ),
[ [1, 14], [15, 19] ] );
-cmp_deeply( merge_intervals( [ [2,7], [3,9], [10,12], [15,19], [18,22] ] ),
+cmp_deeply( merge_intervals( [ [2, 7], [3, 9], [10, 12], [15, 19], [18, 22] ] ),
[ [2, 9], [10, 12], [15, 22] ] );
-cmp_deeply( merge_intervals( [ [1,2], [5,6], [3,4] ] ),
- [ [1,2], [3,4], [5,6] ] );
-cmp_deeply( merge_intervals( [ [1,2], [5,6], [2,5] ] ),
- [ [1,6] ] );
-cmp_deeply( merge_intervals( [ [1,1], [2,2], [3,3] ] ),
- [ [1,1], [2,2], [3,3] ] );
+cmp_deeply( merge_intervals( [ [1, 2], [5, 6], [3, 4] ] ),
+ [ [1, 2], [3, 4], [5, 6] ] );
+cmp_deeply( merge_intervals( [ [1, 2], [5, 6], [2, 5] ] ),
+ [ [1, 6] ] );
+cmp_deeply( merge_intervals( [ [1, 1], [2, 2], [3, 3] ] ),
+ [ [1, 1], [2, 2], [3, 3] ] );
+cmp_deeply( merge_intervals( [ [1, 3], [4, 8], [5, 7] ] ),
+ [ [1, 3], [4, 8] ] );
+
#
#
# METHODS
@@ -35,12 +38,19 @@ sub merge_intervals {
if (defined $l && defined $k) {
if (($i <= $l) || ($k == $i)) {
$k = $interval->[1];
- $m->[-1]->[1] = $k;
+ if ($m->[-1]->[1] < $k) {
+ $m->[-1]->[1] = $k;
+ }
next;
}
}
my ($j, $_k) = _merge_intervals($interval->[1], $intervals);
+
+ if ($j < $interval->[1]) {
+ $j = $interval->[1];
+ }
+
push @$m, [$i, $j];
$k = $_k;