Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Finding missing numbers in a list

by BrowserUk (Pope)
on Sep 03, 2004 at 16:52 UTC ( #388342=note: print w/replies, xml ) Need Help??


in reply to Finding missing numbers in a list

use List::Util qw[ reduce ]; my @in = ( 41888, 41889, 41890, 41892, 41895 ); my @missing; reduce{ push @missing, $a+1 .. $b-1; $b } @in; print @missing; 41891 41893 41894

If your list is large, then this will be more (memory) efficient:

my @in = ( 41888, 41889, 41890, 41892, 41895 ); my @missing; push @missing, $in[ $_ ] +1 .. $in[ $_+1 ] -1 for 0 .. $#in-1; print @missing; 41891 41893 41894

Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail
"Memory, processor, disk in that order on the hardware side. Algorithm, algorithm, algorithm on the code side." - tachyon

Replies are listed 'Best First'.
Re^2: Finding missing numbers in a list
by ambrus (Abbot) on Sep 03, 2004 at 17:05 UTC

    Wow! Reduce with side effects, I've never seen that idiom. Smart.

      Well, I'd probably use my mapn utility func for this, but reduce is available pretty much everywhere and lent itself to avoiding the discussion about implementation details.


      Examine what is said, not who speaks.
      "Efficiency is intelligent laziness." -David Dunham
      "Think for yourself!" - Abigail
      "Memory, processor, disk in that order on the hardware side. Algorithm, algorithm, algorithm on the code side." - tachyon

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (5)
As of 2020-09-19 03:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    If at first I donít succeed, I Ö










    Results (114 votes). Check out past polls.

    Notices?