LINUX.ORG.RU

История изменений

Исправление qulinxao3, (текущая версия) :

затруднение только в несимметричности ( т/е если интервал из набора польностю покрыт новым(вставляемым) интервалом тогда новый давит - если же вставляемый покрыт уже имеющимся в наборе то имеющийся рвётся вставляемым) крч

далее везде A<=B и x<=y

  Пусть [A,B] - добавляемый в набор -

  для  каждого интервала [x,y]  из входного набора

      ((y<A)или(B<x)&&push(x,y)

      ||push(x,A-1)&&push(B+1,y)  

  push(A,B)

где push(q,p) is (q<=p)&&ДобавитьВвыходнойНабор([q,p]);return TRUE

т.е возможно 3 различных случая нового и очередного из набора:

  1. интервалы удаленны друг от друга тогда вход на выход
  2. перекрытие тогда на выход лишь та(те) часть входа что за пределами нового

Исходная версия qulinxao3, :

затруднение только в несимметричности ( т/е если интервал из набора польностю покрыт новым(вставляемым) интервалом тогда новый давит - если же вставляемый покрыт уже имеющимся в наборе то имеющийся рвётся вставляемым) крч

далее везде A<=B и x<=y

  Пусть [A,B] - добавляемый в набор -

  для  каждого интервала [x,y]  из входного набора

      ((y<A)или(B<x)&&push(x,y)

    ||((A<=x)и(y<=B))&&TRUE

    ||push(x,A-1)&&push(B+1,y)  

  push(A,B)

где push(q,p) is (q<=p)&&ДобавитьВвыходнойНабор([q,p]);return TRUE

т.е возможно 3 различных случая нового и очередного из набора:

  1. интервалы удаленны друг от друга тогда вход на выход
  2. новый полностью покрывает тогда на выход пусто
  3. частичное перекрытие тогда на выход лишь та часть входа что за пределами нового