[Tutor] overlapping tuples

Richard Damon Richard at Damon-Family.org
Sat Feb 29 06:39:05 EST 2020


On 2/28/20 8:36 PM, Narasimharao Nelluri wrote:
> Thanks Mats for your inputs.  overlap means if two numbers share across two
> tuples For Ex  if we take two tuples (1,20) and (15,20)  there is a
> over lap because 15,16,17,18,19,20  numbers are sharing between these
> two sets. Sets may not solve the issue because sets will
> eliminate duplicate elements in a given data structure. Here we are
> finding all the over lapping tuples  in a given list of tuples.
>
> Thanks
> Narasimha.

I think wat Mats was pointing out was that there is a lot of apparently 
assumed knowledge about the problem, i.e. a lack of a formal statement 
of what you are trying to do.

My understanding is as follows:

We are given a List of 2 element Tuples (a, b) each representing a 
closed interval (inclusive of the end points) where the tuple (a, b) 
represents all the values x such that a <= x <= b.

We want to find all the tuples in the list that represent ranges that 
overlap with another tuple in the list.

I think what we still need is a better definition of what the output is 
you want. Do you want a list of the tuples that participate in the 
overlap (which is my first understanding of the problem) or do you want 
the just a list of the ranges of overlap?

Details in the problem statement have great impact on the details of the 
solution.

Is it allowed for a given range to be repeated? (Your example says Yes)

If a given range overlaps multiple other ranges, should it be listed 
once or once per overlap?

Your example of:

list3 = [(1,10),(15,20),(1,10),(1,10),(101,110)]
tuple_overlap(list3)

in the first case it should return [(1, 10), (1, 10), (1, 10)] as (1, 
10) occurs 3 times

in the second case it should probably return [{1, 10), (1, 10), (1, 10), 
(1, 10), (1, 10), (1, 10)] as you have 3 tuples (1, 10) and each one 
overlaps with 2 other tuples.

Both of these options need a bit more work in your program to handle, 
and it makes a big difference as to which one you want.

This goes back to one of the basic principles of programming, makes sure 
you have (and give to others) a good problem definition, and be prepared 
as you move along to come up with more questions that need answers. 
Short English statements may SEEM to be enough, but often are missing 
details and have assumptions in definitions that need to be answered,

-- 

Richard Damon



More information about the Tutor mailing list