Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Converting a list of numbers to use a range operator

by LanX (Canon)
on Mar 23, 2013 at 20:50 UTC ( #1025072=note: print w/ replies, xml ) Need Help??


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)


Comment on Re: Converting a list of numbers to use a range operator
Select or Download Code
Re^2: Converting a list of numbers to use a range operator
by Anonymous Monk on Mar 24, 2013 at 13:22 UTC
    OK, very short code, but why does this push @a,"inf" work? Where is this "inf" documented?
      > but why does this push @a,"inf" work?

      inf and -inf are special numeric constants

      DB<159> $a=inf => "inf" DB<160> --$a => "inf" DB<161> ++$a => "inf"

      in this case they are handy, because $now+1 == inf won't raise a warning

      DB<116> use warnings;5=="inf" => "" DB<117> use warnings;5=="WhatEver" Argument "WhatEver" isn't numeric in numeric eq (==) at (eval 47)[mult +i_perl5db.pl:644] line 2.

      > Where is this "inf" documented?

      no idea, I scanned the perldocs for X<inf> w/o success.

      see also Infinity and Inf?

      Cheers Rolf

      ( addicted to the Perl Programming Language)

      UPDATE: deleted wrong example about incrementing inf

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1025072]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (10)
As of 2014-10-20 11:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (75 votes), past polls