Advertisement
Guest User

Untitled

a guest
Apr 19th, 2015
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.33 KB | None | 0 0
  1. import myinterval
  2.  
  3. def binarySearch(list_intervals, new_interval):
  4.         if len(list_intervals) == 0:
  5.             return []
  6.         else:
  7.             midpoint = len(list_intervals)//2
  8.             current_interval = myinterval.list_to_interval([list_intervals[midpoint]])
  9.             if current_interval.sth_common(new_interval):
  10.                 res = [midpoint,midpoint]
  11.                 i = midpoint+1
  12.                 j = midpoint-1
  13.                 while i<len(list_intervals):
  14.                     aux_interval = myinterval.list_to_interval([list_intervals[i]])
  15.                     if aux_interval.sth_common(new_interval):
  16.                         res[1]+=1
  17.                     else:
  18.                         break
  19.                     i+=1
  20.                 while j>=0:
  21.                     aux_interval = myinterval.list_to_interval([list_intervals[j]])
  22.                     if aux_interval.sth_common(new_interval):
  23.                         res[0]-=1
  24.                     else:
  25.                         break
  26.                     j-=1
  27.                 return res
  28.             else:
  29.                 if list(new_interval)[0]._lower_value < list_intervals[midpoint][0]:
  30.                     fromto = binarySearch(list_intervals[:midpoint],new_interval)
  31.                      
  32.                 else:
  33.                     fromto = binarySearch(list_intervals[midpoint+1:],new_interval)
  34.                     if(len(fromto)!=0):
  35.                         fromto[0]+=midpoint+1
  36.                         fromto[1]+=midpoint+1
  37.                 return fromto
  38.  
  39. class Reserva(object):
  40.     def __init__(self, llista_temps,llista_ocupacio):
  41.         self.temps = llista_temps
  42.         self.ocupacions = llista_ocupacio
  43.  
  44.  
  45.     def __add__(self, new_interval):
  46.         A = self.intersection(new_interval)
  47.         B = new_interval.intersection(self.opened_complement())
  48.         C = self.intersection(new_interval.opened_complement())
  49.         return (A.union(B)).union(C)
  50.  
  51.  
  52. # pot_reservarse: ens diu si un element es pot reservar. Els seus inputs sรณn l'objecte i un interval. Si l'objecte es pot reservar retorna True, en cas contrari, retorna una tupla amb l'interval en que es troba reservat i el seu estat 0/1.
  53.     def pot_reservarse(self, interval):
  54.         interval = myinterval.list_to_interval([interval])
  55.         return binarySearch(self.temps,interval)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement