Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 27, 2017 11:34:12

martin
От:
Зарегистрирован: 2010-10-29
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Кол-во пересечений отрезков

Всем привет!

Допустим есть список числовых отрезков (от ЧИСЛО, до ЧИСЛО)

 data = [
   (100, 200),
   (50, 250),
   (240, 500),
   (700, 800),
   (900, 1000),
]

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



Отредактировано martin (Янв. 27, 2017 12:08:29)

Офлайн

#2 Янв. 27, 2017 11:40:18

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Кол-во пересечений отрезков

не понятно по какой логике они пересекаются?
Я например в упор не вижу пересечений



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Янв. 27, 2017 12:06:42

martin
От:
Зарегистрирован: 2010-10-29
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Кол-во пересечений отрезков

ZerG
не понятно по какой логике они пересекаются? Я например в упор не вижу пересечений

я имел ввиду числовые отрезки от и до, например (100, 200) = от 100 до 200



Отредактировано martin (Янв. 27, 2017 12:07:35)

Офлайн

#4 Янв. 27, 2017 13:09:28

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Кол-во пересечений отрезков

Interval или interval

Отредактировано 4kpt_IV (Янв. 27, 2017 13:11:17)

Офлайн

#5 Янв. 27, 2017 14:13:31

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Кол-во пересечений отрезков

Да вы сбрендили, ради такой плевой задачки сторонний код подключать?

 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))



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version