in reply to Searching parallel arrays.
use strict; use warnings; use Data::Dumper; my @a1 = ( 100, 204, 312 ); my @a2 = ( 102, 313, 409 ); my @a3 = ( 205, 206, 315 ); my @a4 = ( 207, 210, 314 ); ## Two contiguous sequences of 4 values: 204 .. 207 & 312 .. 315 my $arrayNo = -1; my @ints = sort {$a->[0] <=> $b->[0]} map { my $raOrig = $_; my @items = (); push @items, [$raOrig->[0]->[$_], qq{$raOrig->[1]:$_}] for 0 .. $#{$raOrig->[0]}; @items; } map { $arrayNo ++; [$_, $arrayNo] } \@a1, \@a2, \@a3, \@a4; my @sets; for my $window (0 .. $#ints - 3) { push @sets, [@ints[$window .. $window + 3]] if $ints[$window]->[0] == $ints[$window + 3]->[0] - 3; } print Dumper \@sets;
The Dumper output is
$VAR1 = [ [ [ 204, '0:1' ], [ 205, '2:0' ], [ 206, '2:1' ], [ 207, '3:0' ] ], [ [ 312, '0:2' ], [ 313, '1:1' ], [ 314, '3:2' ], [ 315, '2:2' ] ] ];
I hope this is of use.
Cheers,
JohnGG
Update: Removed superfluous variable $elemNo left over from development
|
|---|