1..10 - interval
and
2..5 - subinterval
4..7 - subinterval
####
1->0
2->1
3->1
4->2
5->2
6->1
7->1
8->0
9->0
10->0
####
#!/usr/bin/perl
use Bit::Vector;
use Data::Dumper;
use strict;
my @vecArray;
my $x=0;
while($x<4){
$vecArray[$x] = Bit::Vector->new(21);
my $int = int(rand(21));
my $min = $int;
my $max = $int<=20-5 ? $int+5 : $int;
$vecArray[$x]->Interval_Fill($min,$max);
$x++;
}
my $set1= Bit::Vector->new(21);
$set1->Intersection($vecArray[0],$vecArray[2]);
my $start = 0;
while ($start < $set1->Size() and my ($min, $max) = $set1->Interval_Scan_inc($start)){
print $min . "-" . $max . "\n";
$start = $max+1 ;
}
####
|interval| = X
|subinterval| = X/n (n- number of intervals)
Y=X (Y - nubmber of subinterval sets)
O(X^2) - not good if implemented naively