Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Get ranges from a list of numbers (like 1,2,3 => 1-3)

by Doctrin (Beadle)
on Apr 09, 2013 at 16:26 UTC ( #1027777=perlquestion: print w/ replies, xml ) Need Help??
Doctrin has asked for the wisdom of the Perl Monks concerning the following question:

Hello dear Monks. Say, I have a sorted list like this: 1,2,3,4,9,16,22,23,24,30,35 I want to transform it to: 1-4,9,16,22-24,30,35 So that ranges of numbers are spelled as ranges, not as lists. I know how to solve the inverse problem:
use Set::IntSpan; my $span = Set::IntSpan->new('1-4,9,16,22-24,30,35'); print join "," => $span->elements();
would give me 1,2,3,4,9,16,22,23,24,30,35 . Is there a way to make ranges from a list? Maybe, modules similar to Set::IntSpan, or some algorithm?.. Thanks in advance.

Comment on Get ranges from a list of numbers (like 1,2,3 => 1-3)
Select or Download Code
Replies are listed 'Best First'.
Re: Get ranges from a list of numbers (like 1,2,3 => 1-3)
by aitap (Deacon) on Apr 09, 2013 at 16:46 UTC
      Thank you! That is exactly what I need!
Re: Get ranges from a list of numbers (like 1,2,3 => 1-3)
by SuicideJunkie (Priest) on Apr 09, 2013 at 16:52 UTC

    Quoth the CPAN:

    print $set->as_string(), "\n"; # prints 1,3,5,7,9,100-1000000

    It sounds like Set:IntSpan already does what you want. Just keep reading down the page a little further to Getting Set Contents

Re: Get ranges from a list of numbers (like 1,2,3 => 1-3)
by LanX (Canon) on Apr 09, 2013 at 16:45 UTC
    Same question again in such short interval?

    Smells like homework spirit.

    Cheers Rolf

    ( addicted to the Perl Programming Language)

      Haha, no, that is coincidence... It looks like I should use perlmonks' local search engine... I just googled "perl module to make a range from a list site:perlmonks.org" and did not find that question :( Maybe, searchphrase was not so good. Anyways, thank you very much!
Re: Get ranges from a list of numbers (like 1,2,3 => 1-3)
by daxim (Chaplain) on Apr 09, 2013 at 16:47 UTC
    Call the method run_list, or use the object in string context.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (12)
As of 2015-07-08 07:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (96 votes), past polls