in reply to Lookahead algorithm for IP subroutine

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.

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)