# difference between two Ranges

Hello.
I try to get difference between two ranges. For instance I have to know how many meters from me to target who have own size (or range).

let range = 0 ... 5
let meFromPoint = 0 ... 10

let setRange = Set ( range )
let setMeFromPoint = Set ( meFromPoint )

let diff = setMeFromPoint . subtracting ( setRange ). count // result 5
I found that operation Set(0...veryBigInt) may be slow.
Is exist some native way to get difference between two Ranges?

···

--
Седых Александр

I think you’ll have to write this functionality yourself.

If you start with one range and remove from it everything in another range,
you will end up with either:

i) An empty range, if the first is entirely within the second.
ii) A single range, which might be closed, open, or half-open on either end.
iii) Two ranges, if the second is entirely within the first.

Of course, the built-in range types don’t cover all the possible
opennesses. So you probably want to do something like the following:

• Create your own range type (or types) to handle the various open/closed
possibilities.
• Create your own “collection of ranges” type (probably implemented with an
array of ranges).
• Write methods to handle combining and subtracting ranges and collections
thereof.

You should end up with something whereby subtracting one range from another
creates a collection of ranges, and adding a range to a collection merges
together any ranges that now overlap (keeping the ranges in the collection
disjoint means you can keep the array sorted in the natural manner).

Nevin

···

On Wed, Sep 20, 2017 at 4:09 PM, Седых Александр via swift-users < swift-users@swift.org> wrote:

Hello.
I try to get difference between two ranges. For instance I have to know
how many meters from me to target who have own size (or range).

let range = 0...5

let meFromPoint = 0...10

let setRange = Set(range)

let setMeFromPoint = Set(meFromPoint)

let diff = setMeFromPoint.subtracting(setRange).count// result 5

I found that operation Set(0...veryBigInt) may be slow.
Is exist some native way to get difference between two Ranges?

--
Седых Александр

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users