Parameters : list of current profitable jobs within deadline list of deadline of jobs Returns : true if k[-1] job is profitable to us else false >>> a = Scheduling([(0, 13, 10),(1, 2, 20),(2, 33, 30),(3, 16, 40)]) >>> a.feasible( [0], [2, 13, 16,
(self, profit_jobs: List[int], deadline: List[int])
| 40 | return self.j |
| 41 | |
| 42 | def feasible(self, profit_jobs: List[int], deadline: List[int]) -> bool: |
| 43 | """ |
| 44 | Parameters : list of current profitable jobs within deadline |
| 45 | list of deadline of jobs |
| 46 | Returns : true if k[-1] job is profitable to us else false |
| 47 | >>> a = Scheduling([(0, 13, 10),(1, 2, 20),(2, 33, 30),(3, 16, 40)]) |
| 48 | >>> a.feasible( [0], [2, 13, 16, 33] ) |
| 49 | True |
| 50 | >>> a = Scheduling([(0, 13, 10),(1, 2, 20),(2, 33, 30),(3, 16, 40)]) |
| 51 | >>> a.feasible([0], [2, 13, 16, 33] ) |
| 52 | True |
| 53 | """ |
| 54 | |
| 55 | self.tmp = profit_jobs |
| 56 | self.is_feasible = True |
| 57 | |
| 58 | i = 0 |
| 59 | j = 1 |
| 60 | k = 0 |
| 61 | |
| 62 | while i < len(self.tmp): |
| 63 | while j < len(self.tmp): |
| 64 | self.index1 = self.jobs.index(self.tmp[i]) |
| 65 | self.index2 = self.jobs.index(self.tmp[j]) |
| 66 | j += 1 |
| 67 | if deadline[self.index1] > deadline[self.index2]: |
| 68 | (self.tmp[i], self.tmp[j]) = ( |
| 69 | self.tmp[j], |
| 70 | self.tmp[i], |
| 71 | ) |
| 72 | i += 1 |
| 73 | |
| 74 | while k < len(self.tmp): |
| 75 | self.job = self.tmp[k] |
| 76 | if self.job in self.jobs: |
| 77 | self.jobindex = self.jobs.index(self.job) |
| 78 | else: |
| 79 | self.jobindex = 0 |
| 80 | self.dlineval = deadline[self.jobindex] |
| 81 | self.ftest = k + 1 |
| 82 | k += 1 |
| 83 | if self.dlineval < self.ftest: |
| 84 | self.is_feasible = False |
| 85 | break |
| 86 | return self.is_feasible |
| 87 | |
| 88 | |
| 89 | def main(): |