Advertisement
Vermiculus

whee

Mar 19th, 2012
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.43 KB | None | 0 0
  1. # Python Project 4
  2.  
  3. # ADA
  4.  
  5. def d(s):
  6.     raw_input("----DEBUG----{0}".format(s))
  7.  
  8. class Time:
  9.     def __init__(self, h, m):
  10.         self.hour = h
  11.         self.minute = m
  12.    
  13.     def __str__(self):
  14.        
  15. #       return "{h}:{m}".format(h=self.hour, m=self.minute)
  16.         return '%(hour)02d:%(minute)02d' % {"hour":self.hour, "minute":self.minute}
  17.    
  18.     def add(self, time):
  19.         r = Time(self.hour, self.minute, self.second)
  20.         r.hour += time.hour
  21.         r.minute += time.minute
  22.        
  23.         if r.minute > 59:
  24.             r.minute -= 60
  25.             r.hour += 1
  26.        
  27.         # Do we need to roll over the hour to a day?
  28.         # Is a concept of a day even necessary?
  29.        
  30.         return r
  31.    
  32.     def sub(self, time):
  33.         r = Time(self.hour, self.minute, self.second)
  34.         r.hour -= time.hour
  35.         r.minute -= time.minute
  36.        
  37.         if r.minute < 0:
  38.             r.minute += 60
  39.             r.hour -= 1
  40.        
  41.         return r
  42.    
  43.     def isLaterThan(self, time):
  44.         if self.hour >= time.hour:
  45.             return True
  46.         elif self.minute >= time.minute:
  47.             return True
  48.         return False
  49.  
  50. def eventCompare(event1,event2):
  51.     deltah = event1.start.hour - event2.start.hour
  52.     if deltah == 0:
  53.         return event1.start.minute - event2.start.minute
  54.     else:
  55.         return deltah
  56.  
  57. class Event:
  58.     def __init__(self, timeStart, timeEnd):
  59.         self.start = timeStart
  60.         self.end = timeEnd
  61.    
  62.     def __str__(self):
  63.         return "{}-{}".format(str(self.start), str(self.end))
  64.    
  65.     def getLength(self):
  66.         return self.end.sub(self.start)
  67.    
  68.     def overlaps(self, event):
  69.         return self.end.isLaterThan(event.start)
  70.  
  71. def getEvent(s): # returns a single Event from a string 'HH:MM-HH:MM'
  72.     times = s.split('-') # splits it up into [HH:MM,HH:MM]
  73.     events = [times[0].split(':'),times[1].split(':')] # splits it up into [[HH,MM],[HH,MM]]
  74.    
  75.     # it seems to like the stupid way
  76.     for i in range(2):
  77.         for j in range(2):
  78.             events[i][j] = int(events[i][j])
  79.            
  80.     return Event(Time(events[0][0],events[0][1]), Time(events[1][0],events[1][1]))
  81.  
  82. # returns a tuple of (minSleep, maxAwake, [Events])
  83. def input():
  84.     (minSleep, maxAwake) = inputMinMax()
  85.     events = list()
  86.     imp = raw_input()
  87.     while len(imp) != 0:
  88.         events.append(getEvent(imp))
  89.         imp = raw_input()
  90.        
  91.     for e in events:
  92.         print e
  93.    
  94.     events.sort(eventCompare)
  95.    
  96.     for e in events:
  97.         print e
  98.    
  99.     return ((minSleep, maxAwake), events)
  100.  
  101. def inputMinMax():
  102.     s = raw_input("'min max' := ")
  103.     minmax = s.split()
  104.     min = int(minmax[0])
  105.     max = int(minmax[1])
  106.     return (min,max)
  107.  
  108. #################################
  109.  
  110. t = input()
  111. for m in t:
  112.     for n in m:
  113.         print n
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement