このディレクトリの索引

# 出典 :: <集大成>アルゴリズム大辞典 #686 # 範囲を扱うのに適したデータ構造ってありますか # こんな感じ # # 和集合 #  [1-4]と[2-5]を混ぜると[1-5] #  [1-2,5-6,8-10]と[3-4,11-13]を混ぜると[1-6,8-10,11-13] # 差集合 #  [1-10]から[3-4]を削除して[1-2,5-10] # 検索 #  [1-10,20-30]から15を探す # # わりと利用価値はあると思うんですが # こういうのってないですかね? # 範囲検索([[_開始点,_終了点]],_検索点) :- _検索点 @>= _開始点, _検索点 @=< _終了点. 和範囲([[_開始点_1,_終了点_1]],[[_開始点_2,_終了点_2]],[[_開始点_1,_終了点_1]]) :- _開始点_2 @>= _開始点_1, _終了点_2 @=< _終了点_1. 和範囲([[_開始点_1,_終了点_1]],[[_開始点_2,_終了点_2]],[[_開始点_2,_終了点_2]]) :- _開始点_2 @=< _開始点_1, _終了点_2 @>= _終了点_1. 和範囲([[_開始点_1,_終了点_1]],[[_開始点_2,_終了点_2]],[[_開始点_1,_終了点_2]]) :- _開始点_2 @>= _開始点_1, _終了点_2 @>= _終了点_1. 和範囲([[_開始点_1,_終了点_1]],[[_開始点_2,_終了点_2]],[[_開始点_2,_終了点_1]]) :- _開始点_2 @=< _開始点_1, _終了点_2 @=< _終了点_1. 和範囲([[_開始点_1,_終了点_1]],[[_開始点_2,_終了点_2]],[[_開始点_1,_終了点_1],[_開始点_2,_終了点_2]]) :- _終了点_1 < _開始点_2. 和範囲([[_開始点_1,_終了点_1]],[[_開始点_2,_終了点_2]],[[_開始点_2,_終了点_2],[_開始点_1,_終了点_1]]) :- _終了点_2 < _開始点_1. 補範囲(_範囲_1,_範囲_2,_補範囲) :- 和範囲([[_開始点_1,_終了点_1]],[[_開始点_2,_終了点_2]],_和範囲), 差範囲(_和範囲,[[_開始点_2,_終了点_2]],_補範囲). 差範囲([[_開始点_1,_終了点_1]],[[_開始点_2,_終了点_2]],[[_開始点_1,_開始点_2],[_終了点_2,_終了点_1]]) :- _開始点_2 @>= _開始点_1, _終了点_2 @=< _終了点_1. 差範囲([[_開始点_1,_終了点_1]],[[_開始点_2,_終了点_2]],[[_開始点_2,_開始点_1],[_終了点_1,_終了点_2]]) :- _開始点_2 @=< _開始点_1, _終了点_2 @>= _終了点_1.