in reply to Re: Finding gaps in date ranges
in thread Finding gaps in date ranges

The output from your program is:

ERROR! gap at '2000-3', '2000-4' found!

However, gaps exist at 2000-5 through 2000-11 and 2001-2 through 2002-11, yet were not reported. Did I misunderstand something about your code or how to use it?

Cheers,
Ovid

Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.

Replies are listed 'Best First'.
Re: (Ovid) Re(2): Finding gaps in date ranges
by suaveant (Parson) on May 11, 2001 at 00:51 UTC
    my $error = 0; my @gaps; my @tmp = sort datesort qw( 2000-4 2000-12 2001-1 2002-12 1999-12 ); my($year,$month) = split '-', $tmp[0]; for(my $i = 1; $i < @tmp; $i++) { my $gap = 0; my @range; do { $range[1] = "$year-$month"; if(++$month == 13) { $month = 1; $year++; } if($tmp[$i] ne "$year-$month") { $range[0] = "$year-$month" unless $gap; $gap++; $error = 1; } if($gap > 100) { print "ERROR! infinite loop\n"; last; } } until($tmp[$i] eq "$year-$month"); if($gap) { push @range, "$year-$month"; push @gaps, \@range; } } if($error) { for(@gaps) { print "Gap from $_->[0] to $_->[1]\n"; } } print "Success\n" unless $error; sub datesort { my($a1,$a2) = split '-', $a; my($b1,$b2) = split '-', $b; $a1 <=> $b1 or $a2 <=> $b2; }
    This stores the ranges...
                    - Ant
Re: (Ovid) Re(2): Finding gaps in date ranges
by suaveant (Parson) on May 11, 2001 at 00:38 UTC
    Yeah, just realized that... easy fix... one second...
                    - Ant