This was originally on my scratchpad, it is posted here simply for TIMTOWTDI. My idea is
to read through the entire array and place consecutive integers into their own "buckets."
Keep pushing the integers if the next integer is consecutive into another array
(which is stored in an outer array), and start a new array when no longer consecutive.
Then, (and this was inspired by some of dragonchild's code) simply sort that 2-d array
based on the size if the array's it contains. The first array (element) contains
the largest amount of consecutive integers.
use strict;
use warnings;
use Data::Dumper;
my @proximity = (1..5, 8..10, 15..30, 35..40);
my @bucket;
my $j = 0;
for my $k (0 .. $#array) {
if ($proximity[$k] == $proximity[$k+1] - 1) {
push @{ $bucket[$j] }, $proximity[$k];
}
else {
$j++;
}
}
my @ip = (sort { $#$b <=> $#$a } @bucket)[0];
print Dumper \@ip;
Your Milleage Will Vary, naturally ... but this is a fairly easy to understand solution,
if not a bit memory intensive.