my ($int) = @_;
my $n = $int->{N};
my $d = $int->{D};
+ my $dmin = $d - $slop;
my $dmax = $d + $slop;
my $spec = $int->{Spec};
my $start_age = ($n-1) * $d - $slop;
my $i = 0;
+ my $insufficiently_old = 0;
- print DEBUG "FLAG $spec sa=$start_age dmax=$dmax\n";
+ print DEBUG "FLAG $spec sa=$start_age dmin=$dmin dmax=$dmax\n";
# find $i, the youngest which is at least $start_age
for (;;) {
print DEBUG "i #$i $files[$i]{A}\n";
last if $files[$i]{A} >= $start_age;
if ($i == $#files) {
+ $insufficiently_old = 1;
print STDERR "insufficiently old for $spec\n";
last;
}
$i++;
}
+ my $oldest = $i;
+ my $count = 0;
+
my $use = sub {
my ($i, $spec) = @_;
push @{ $files[$i]{U} }, $spec;
+ $count++;
};
for (;;) {
$i = $j;
}
+
+ $i = $oldest;
+ while ($count < $n) {
+ for (;;) {
+ $i++;
+ if ($i > $#files) {
+ if (!$insufficiently_old) {
+ print STDERR
+ "insufficiently old for $spec (density compensation)\n";
+ }
+ return;
+ }
+ my $dt = $files[$i]{A} - $files[$oldest]{A};
+ print DEBUG "o #$i $files[$i]{A} dt=$dt\n";
+ last if $dt >= $dmin;
+ }
+ $use->($i, "$spec+");
+ }
}
sub implement () {