#! perl -slw use strict; my @ranges = map{ my $a = rand( 900 ); [ $a, $a + rand( 1000 - $a ) ] } 1 .. 7; print "$_ : [ @{ $ranges[ $_ ]} ]" for 0 .. 6; my @overlaps; for my $i1 ( 0 .. 6 ) { for my $i2 ( $i1+1 .. 6 ) { unless( $ranges[ $i1 ][ 0 ] > $ranges[ $i2 ][ 1 ] or $ranges[ $i1 ][ 1 ] < $ranges[ $i2 ][ 0 ] ) { push @{ $overlaps[ $i1 ] }, $i2; } } } defined $overlaps[ $_ ] and print "$_ overlaps with @{ $overlaps[ $_ ] }" for 0 .. 6; __END__ c:\test>junk39 0 : [ 752.67333984375 781.958845257759 ] 1 : [ 45.5657958984375 108.800557162613 ] 2 : [ 574.887084960938 742.659308388829 ] 3 : [ 190.887451171875 585.887861438096 ] 4 : [ 20.7916259765625 200.777344871312 ] 5 : [ 306.353759765625 756.753877364099 ] 6 : [ 721.856689453125 821.619211696088 ] 0 overlaps with 5 6 1 overlaps with 4 2 overlaps with 3 5 6 3 overlaps with 4 5 5 overlaps with 6
In reply to Re: find which ranges share at least one common value
by BrowserUk
in thread find which ranges share at least one common value
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |