CocoaPods trunk is moving to be read-only. Read more on the blog, there are 18 months to go.

DividableRange 0.1.1

DividableRange 0.1.1

TestsTested
LangLanguage SwiftSwift
License MIT
ReleasedLast Release Oct 2017
SwiftSwift Version 3.0
SPMSupports SPM

Maintained by Oleksii Horishnii.



  • By
  • Oleksii Horishnii

DividableRange



Example

let ranges = DividableRange<Int>.rangesFor(baseValue: 0, changes: [
    DividableRange<Int>.Divider(idx: 24, changeRightFn: { $0 + 9000 }),
    DividableRange<Int>.Divider(idx: 4, changeRightFn: { $0 + 1 }),
    DividableRange<Int>.Divider(idx: 7, changeRightFn: { $0 + 1 }),
    DividableRange<Int>.Divider(idx: 10, changeRightFn: { $0 - 1 }),
    DividableRange<Int>.Divider(idx: 20, changeRightFn: { $0 + 100 }),
    DividableRange<Int>.Divider(idx: 13, changeRightFn: { $0 + 1 }),
    DividableRange<Int>.Divider(idx: 20, changeRightFn: { $0 + 10 }),
    ])

var someIndexes = Array(0..<25)
let itemsAtIndexes = someIndexes.map { (idx) -> Int in
   return DividableRange<Int>.binarySearch(idx: idx, ranges: ranges)
}
print(itemsAtIndexes) // [0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 112, 112, 112, 112, 9112]

Complexity

Creation is O(N*log(N))

Lookup is O(log(N))

Installation

DividableRange is available through CocoaPods. To install
it, simply add the following line to your Podfile:

pod 'DividableRange'

Author

Oleksii Horishnii, [email protected]

License

DividableRange is available under the MIT license. See the LICENSE file for more info.