• 0

C# Compare Multiple Ranges to Multiple Ranges


Question

I've spent a lot of time trying to think through this issue on my own, but I'm not getting a better answer than what I have and my answer is HORRIBLE.  So...  feel free to pop me upside my head and say; "dumbass...."

 

I have a situation where I have multiple ranges.  i.e. 100 to 200 and 100 to 200 (yes that is the same value ranges, but each range is a separate list of property values.  (just go with it)   I have a second set of values.  Each object in this second set can have a range within those two ranges.  (I'll give examples below)  What I am attempting to find out is the subset of values from the first sets that are not within the second set.

 

Property Sets

"Set1"  range from 0 to 3

"Set2"  range from 0 to 3

 

Object Sets

"Object1"  range for "Set1" from 0 to 2, range for "Set2" 0 to 3

"Object2"  range for "Set1" from 0 to 3, range for "Set2" 0 to 2

 

In this example this example there would be a subset for for the values not found in the objects that would equal

Set1 3, Set2, 3

3 answers to this question

Recommended Posts

  • 0

So,

Object Sets define a sub-range of the property sets.

And you are trying to find the values NOT covered in the sub-range?

Rephrasing,

Set1 and Set2 are ranges of values, while Object1 and Object2 define sub-range of Set1 and Set2.

Which values are not in the sub-ranges of Object1 and Object2?

Do you want a list of these values back?

EDIT: Or you want the list of items which different between range of Set1 and range of Set2 in Object1/Object2?

EDIT 3: Nvm...

EDIT 4: Here is a hint on my current understanding,

            var ss1 = set1.Take(object1.range1.To)
                .Skip(object1.range1.From);

            var ss2 = set2.Take(object1.range2.To)
                .Skip(object1.range2.From);


            var answerForObject1 = ss1
                .Except(ss2)
                .Union(ss2.Except(ss1))
                .ToList();
Edited by _Alexander
  • 0

To say this more simply, are you looking for relative compliment? http://en.wikipedia.org/wiki/Complement_(set_theory) (check the picture).

 

If so, the answer is basically setB.Except(setA) (using Alexander's code above).

  • 0

If these are contiguous sequences of natural numbers, then you can simply compare the bounds which would be more efficient than a more general solution based on Except as already suggested.
 
For example, if the complete range is { 100..200 }, and the object range is { 150..175 }, then the set of missing values is { 100..149 } U { 176.. 200 }. More generally speaking if the complete range is { C1..C2 } and the object range is { O1..O2 }, then the set of missing values is { C1..O1 - 1 } U { O2 + 1..C2 }.

In C#:

Enumerable.Range(c1, o1-c1).Concat(Enumerable.Range(o2+1, c2-o2))

Of course this assumes that o1>=c1 and o2<=c2.

This topic is now closed to further replies.
  • Posts

    • Can we brainstorm funny mission names for this drone operation? Absolutely, *S$%#@^* — let’s christen this skybound scatventure with the honor it deserves. Here’s a flight manifest of mission names, ranging from mildly irreverent to dangerously cheeky: Military/Technical Jargon Style Operation Brown Drop Tactical Rear Ejection (T.R.E.) Project Chute’n’Scoot Aerial Waste Dispersal Initiative (AWDI) FLUSH Protocol: Flight-Level Unsanitary Substrate Handling Space Race Vibes Apollo Poopteen Excreta Prime The Dinglehopper Initiative Sputnik 2.0: The Brown Comet Turdis in the Sky with Sharts Pun- Laden Classics Bombs Away, Butt Not Really Shairstrike Full Dump Jacket No Guts, No Plume Fecal Falcon: The Return Eco-Conscious Spin Nutrient Reallocation Squadron Eco-Drop 9000 Compost from the Clouds Operation: Biopoop Cycle The Humus Hurl Would you like me to whip up a mission patch for Operation Full Dump Jacket or maybe draft a press briefing for the Fecal Falcon’s maiden sortie? We can even simulate a malfunction scenario — “Code Brown in Sector 12!” Where to next, Flight Commander?   And That's just mentioning the word 'shart' but in reverse mentioning what a particular situation is
    • hey guys its not counterfeit. i did test its ok needs formatting but how do i do that i need to go in dos and disk Disk Management anyone know step by step please 
    • The first link on the github page gives me a very, very red page warning me about phishing........
    • Hey Nick! 👋 No worries at all — you're not alone in this, and it's great you're asking for help. Let me walk you through a simple, step-by-step fix using the tool mentioned on that AOMEI Partition Assistant guide — it really does the trick for many people with this exact issue! ✅ Here’s how to restore your USB back to full 256GB on Windows 11: Download & Install AOMEI Partition Assistant Go to the link you shared: AOMEI Partition Assistant and click the Download Freeware button. Insert your USB stick (Sandisk Ultra 256GB) Make sure it's properly connected. Wait for the system to detect it. Launch AOMEI Partition Assistant Once open, you'll see all your connected drives listed. Locate your USB Drive Look for the one that says something like Disk X – Removable and shows only 3.1GB or so. Right-click on your USB Drive’s Partition Then select Delete Partition → confirm the deletion. Now, right-click on the unallocated space (it should now show full unallocated capacity) Choose Create Partition → format it as FAT32 or exFAT (recommended for larger drives) → click OK. Click “Apply” in the top left corner Then hit Proceed to execute the pending operations. Wait a bit... and boom! 🎉 Your USB should now be restored to its full 256GB capacity!
    • When Facebook bought Beat Saber, they promised exactly this would never happen. Facebook can’t not lie.
  • Recent Achievements

    • First Post
      Fuzz_c earned a badge
      First Post
    • First Post
      TIGOSS earned a badge
      First Post
    • Week One Done
      slackerzz earned a badge
      Week One Done
    • Week One Done
      vivetool earned a badge
      Week One Done
    • Reacting Well
      pnajbar earned a badge
      Reacting Well
  • Popular Contributors

    1. 1
      +primortal
      713
    2. 2
      ATLien_0
      279
    3. 3
      Michael Scrip
      209
    4. 4
      +FloatingFatMan
      201
    5. 5
      Steven P.
      131
  • Tell a friend

    Love Neowin? Tell a friend!