Syntax error Program to find in which interval how many tasks are worked on in Python

Program to find in which interval how many tasks are worked on in Python



Suppose we have a list of intervals where each interval is like [start, end) and we also have a list of strings called types. Now for a given i, the intervals[i] shows the times someone worked on the job types[i] from [start, end). Two intervals of the same type never overlap or touch. So we have to find a sorted merged list where each item has [start, end, num_types], indicates from start to end, num_types number of tasks were being worked on.

So, if the input is like intervals = [ [0, 3], [5, 7], [0, 7] ] types = ["problem solving", "news","game play"], then the output will be [[0, 3, 2], [3, 5, 1],[5, 7, 2]], as we have these few types of work being done: Between [0, 3) "problem solving" and "game play", between [3, 5) "game play", and between [5, 7) "news" and "game play".

To solve this, we will follow these steps −

  • ev := a new list

  • for each interval start end pair (s, e) in intervals, do

    • insert (s, 1) at the end of ev

    • insert (e, −1) at the end of ev

  • sort the list ev

  • cnt := 0, last := −1

  • ans := a new list

  • for each time and increment parameter of events (t, inc) in ev, do

    • if t is not same as last and cnt is not same as 0, then

      • cnt := cnt + inc

    • last := t

  • return ans

Let us see the following implementation to get better understanding −

Example

 Live Demo

class Solution:
   def solve(self, intervals, jobs):
      ev = []
      for s, e in intervals:
         ev.append((s, 1))
         ev.append((e, −1))
      ev.sort()
      cnt = 0
      last = −1
      ans = []
      for t, inc in ev:
         if t != last and cnt != 0:
            ans.append([last, t, cnt])
         cnt += inc
         last = t
      return ans
ob = Solution()
intervals = [
   [0, 3],
   [5, 7],
   [0, 7]
]
types = ["problem solving", "news", "game play"]
print(ob.solve(intervals, types))

Input

[[0, 3],[5, 7],[0, 7]], ["problem solving", "news", "game play"]

Output

[[0, 3, 2], [3, 5, 1], [5, 7, 2]]
Updated on: 2020-10-21T10:36:40+05:30

127 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements