Похоже, что есть один, называемый interval-tree
, репо здесь, https://github.com/gam3/interval-tree и здесь https://github.com/misshie/interval-tree. Кажется, что это сделал позже, но драгоценный камень на рубиновых камнях указывает напервый.Очень странно.
Документация неверна на репо и везде.Чтобы использовать его, используйте либо IntervalTree::InclusiveTree.new
, либо IntervalTree::ExclusiveTree.new
.Это нигде не задокументировано, что странно.Также, что не менее странно, невозможно добавить проблемы в репозиторий github, чтобы это исправить.Я подумываю о создании и создании новой версии, которую может поддерживать сообщество.
В любом случае, вот как вы ее используете:
require "interval-tree"
itv = [(0...3), (1...4), (3...5),]
t = IntervalTree::Tree.new(itv)
p t.search(2) => [0...3, 1...4]
p t.search(1...3) => [0...3, 1...4, 3...5]
Как видите, также требуется утверждениенеправильно задокументировано в репо.Какой беспорядок.