Advertisement
Guest User

Untitled

a guest
May 22nd, 2017
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. # list_forecasts = [[1,3],[2,5]]
  2.  
  3. ## cover(1pm, 7pm, [[1,3], [5,7]])
  4. ## return [[3,5]]
  5.  
  6. def cover(startTime, endTime, list_forecasts):
  7. n = len(list_forecasts)
  8.  
  9. if n == 0:
  10. return [[startTime, endTime]]
  11.  
  12. res = [list_forecasts[0]]
  13.  
  14. for i in range(1,n):
  15. s = list_forecasts[i][0]
  16. e = list_forecasts[i][1]
  17.  
  18. if s <= res[-1][1]:
  19. if e > res[-1][1]:
  20. res[-1][1] = e
  21. else:
  22. res.append(list_forecasts[i])
  23.  
  24. # res = [[1,2],[4,5]]
  25. startInterval = None
  26. endInterval = None
  27.  
  28. finalRes = []
  29.  
  30. # find the start interval
  31. for i in range(len(res)):
  32. if res[i][0] <= startTime:
  33. startInterval = i
  34. break
  35.  
  36. # find the end interval:
  37. for i in range(len(res)):
  38. if res[i][1] >= endTime:
  39. endInterval = i
  40. break
  41.  
  42. print startInterval, endInterval
  43.  
  44. if startInterval is None:
  45. finalRes.append([startTime, res[0][0]])
  46. startInterval = 0
  47.  
  48. if endInterval is None:
  49. finalRes.append([res[-1][1], endTime])
  50. endInterval = len(res) - 1
  51.  
  52. if startTime > res[startInterval][1]:
  53. finalRes.append([startTime, res[startInterval+1][0]])
  54. startInterval += 1
  55.  
  56. if endTime < res[endInterval][0]:
  57. finalRes.append([res[endInterval-1][1], endTime])
  58. endInterval = endInterval - 1
  59.  
  60. for i in range(startInterval, endInterval):
  61. finalRes.append([res[startInterval][1], res[startInterval+1][0]])
  62.  
  63. return finalRes
  64.  
  65.  
  66. startTime = 1
  67. endTime = 7
  68. list_forecasts = [[1,3],[3,7],[4,5]]
  69.  
  70. print cover(startTime, endTime, list_forecasts)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement