Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Алгоритм поиска пересечений интервалос

536
10 ноября 2009 года
alex-kniaz
382 / / 07.08.2008
Даётся строка типа (-x,y)*(x,y) т.е. два интервала, разделённые знаком * Числа могут быть нормальными а могут и плюс-минус бесконечность. Причём границы интервалов - как включительные, так и невключительные.
Т.е может быть и
[-3,5)*(1,9]
и
что угодно в этом роде.

Парсер сделал. Теперь вопрос.

Как имея данные о граничных числах (значение и вхождение в интервал) можно определить пересечение?
Почти как с отрезками но +/-@(бесконечность) и включительные границы мешают
416
10 ноября 2009 года
MaitreDesir
380 / / 02.01.2008
Предположим, что есть следующим образом представленные отрезки:

Код:
Граница = запись
    Тип : Включается/Невключается;
    Значение : Двойной_точности;
 конец Граница.

 Отрезок = запись
    Мин : Граница;
    Макс : Граница;
  конец Отрезок.

  А,Б : Отрезок;


Соответственно, в поле "значение" может быть значение "infinity" и "neginfinity" (для паскаля такие). Получается, теперь надо из отрезка А вычесть все, что не входит в отрезок Б.
Дальше алгоритм примерно такой:
Код:
Если А.Мин.Значение = neginfinity Тогда
    Если (А.Макс.Значение > Б.Мин.Значение) Тогда
      С.Мин.Значение = Б.Мин.Значение
    Иначе
      Если А.Макс.Значение=Б.Мин.Значение и А.Макс.Тип=Включается и Б.Мин.Тип=Включается Тогда
        C.Мин.Значение = А.Макс.Значение
        С.Макс.Значение = А.Макс.Значение
      Иначе
        Нет пересечения
      КонецЕсли
    КонецЕсли
 Иначе
   ....


Дальше - сам. Как-то так...


З.Ы.: Советую - когда закончишь с левой границей мысленно переверни ось и проделай тоже самое с правой.
536
10 ноября 2009 года
alex-kniaz
382 / / 07.08.2008
+1, MaitreDesir
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог