in reply to Clustering Numbers with Overlapping Members

This somewhat C-like solution is intended to avoid off-by-one errors at the beginning and end of the array. I have coded it as an array of array because that seemed logical and sufficient from the information so far -- the solution needs very little to make it a hash again. For example the operation chr(64+$_) would map the array indices in this AofA solution to the ascending alphabetical hash keys in the OP, should there be an undisclosed need for it to be a hash after all.
my @aOfA=(); for ( my $i=0; $i<=$#nlist; $i++ ) { my @tmp = (); ( $i > 0 ) and (($nlist[$i] - $nlist[$i-1]) < 2 ) and $tmp[0]=$nlist[$i-1]; push @tmp, $nlist[$i]; ( $i < $#nlist ) and (($nlist[$i+1] - $nlist[$i]) < 2 ) and push @tmp, $nlist[$i+1]; push @aOfA, \@tmp; # Note that @tmp turns anonymous but doesn't dispose # at this reloop point }

-M

Free your mind