in reply to [Solved] Converting a list of numbers to use a range operator
non-strict hack :)
use Data::Dump qw/pp/; @array = (10, 11, 12, 2, 3, 4, 7); @a = sort {$a <=> $b} @array; $first = $last = shift @a; # init start push @a,"inf"; # infinity end for $now (@a) { unless ( $last+1 == $now ) { push @ranges,[$first,$last]; # todo: one element ranges $first=$now; } $last=$now; } pp @ranges;
not sure how you wanna handle one element ranges, so I kept it up to you:
([2, 4], [7, 7], [10, 12])
Cheers Rolf
( addicted to the Perl Programming Language)
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Converting a list of numbers to use a range operator
by Anonymous Monk on Mar 24, 2013 at 13:22 UTC | |
by LanX (Saint) on Mar 24, 2013 at 14:18 UTC |
In Section
Seekers of Perl Wisdom