diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-03-03 17:42:00 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-03-03 17:42:00 +0000 |
| commit | b1213358b8db463111fed3ce1e654148e8f9b124 (patch) | |
| tree | a0075b47734d4f6e4c55209ace18b939dfc64946 /challenge-050/mohammad-anwar | |
| parent | 0bfc3b6fd27ff30753337847ef3f27bcb7fd69a1 (diff) | |
| download | perlweeklychallenge-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.pl | 28 |
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; |
