「から」と「から」の時間を示すタプルでいっぱいのリストがあるとします。
tuples = [ (0, 5), (5, 10), (10, 15), (15,20) ]
そして、特定のタプルと重複するタプルのリストを取得できるようにしたい:
searchTuple = (3,11)
result = findOverlap(tuples, searchTuple)
このコードは次のリストを返します。
[ (0, 5), (5, 10), (10, 15) ]
(16, 22) の searchTuple は、最後のタプル (15,20) のみを返す必要があります。
この検索をコーディングする最も効率的な方法は何ですか? いろいろ試してみましたが、アルゴリズムがうまく動作しません。キャッチすることに興味がある次のさまざまな「重複」を考えました。
a) tuple_min < find_min AND tuple_max > find_max
search tuple -> | |
|----------------| the search tuple is entirely contained
b) tuple_min > find_min AND tuple_max > find_max
| |
|----------------| the left part of the tuple overlaps
c) tuple_min < find_min AND tuple_max < find_max
| |
|----------------| the right part of the tuple overlaps
しかし、これを実装して得た結果は、間違った結果になってしまいました...私の考えはどこが間違っていますか?