Найти - Пользователи
Полная версия: Кол-во пересечений отрезков
Начало » Python для новичков » Кол-во пересечений отрезков
1
martin
Всем привет!

Допустим есть список числовых отрезков (от ЧИСЛО, до ЧИСЛО)
 data = [
   (100, 200),
   (50, 250),
   (240, 500),
   (700, 800),
   (900, 1000),
]

Как найти, сколько отрезков пересекаются в данном списке? (в представленном примере это = 3, первые три отрезка пересекаются), если кол-во отрезков может быть несколько тысяч? Существуют ли какие быстрые алгоритмы и т.п.?
ZerG
не понятно по какой логике они пересекаются?
Я например в упор не вижу пересечений
martin
ZerG
не понятно по какой логике они пересекаются? Я например в упор не вижу пересечений

я имел ввиду числовые отрезки от и до, например (100, 200) = от 100 до 200
4kpt_IV
Interval или interval
FishHook
Да вы сбрендили, ради такой плевой задачки сторонний код подключать?

 data = [
   (100, 200),
   (50, 250),
   (240, 500),
   (700, 800),
   (900, 1000),
]
from itertools import combinations
for (a, b), (a1, b1) in combinations(data, 2):
    if a < a1:
        is_intersect = a <= a1 <= b
    else:
        is_intersect = a1 <= a <= b1
    if is_intersect:
        print("({}, {}) intersects ({}, {})".format(a, b, a1, b1))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB