Re: List processing

• To: mathgroup at smc.vnet.net
• Subject: [mg37228] Re: List processing
• From: Selwyn Hollis <selwynh at earthlink.net>
• Date: Thu, 17 Oct 2002 00:09:14 -0400 (EDT)
• References: <200210161825.OAA10586@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```I'm not 100% sure of this, but how about

sortout[intervals_] := ({First[#1], Last[#1]} & ) /@
Sort /@ Flatten /@ Split[Sort[intervals], #1[[2]] >= #2[[1]] & ]

?

Example:

intrvls = Table[x = Random[Integer, {0, 30}]; {x, x + 2}, {10}]

{{18, 20}, {2, 4}, {14, 16}, {1, 3}, {0, 2}, {16, 18}, {7, 9},
{19, 21}, {6, 8}, {6, 8}}

sortout[intrvls]

{{0, 4}, {6, 9}, {14, 21}}

---
Selwyn Hollis

John Leary wrote:
> Greetings
>
> This problem can be solved by conventional programming, but I wonder if
> there is an elegant Mathematica solution ?
>
> A list contains pairs of values, with each pair representing the lower and
> upper edge of a sub-range.  Some of the sub-ranges partially overlap, some
> fully overlap, others don't overlap at all.  The problem is to produce a
> second list that contains the overall upper and lower edges of the
> overlapping sub-ranges.
>
> A simple example :  {{100,200},{150,250},{120,270},{300,400}}  would result
> in {{100,270},{300,400}}.
>
> In the real case, the input list has several hundred elements and the
> output list typically has five elements.
>
> I have a working solution based on loops, but there must be a more elegant
> one.  I would be very grateful for any suggestions.
>
>
> Best regards
>
> John Leary
>
>
>

```

• Prev by Date: Re: List processing
• Next by Date: Re: List processing
• Previous by thread: List processing
• Next by thread: Re: List processing