Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # set works, build, testing,
- # jobs:
- # { 2: [3, 4, 5], 3: [4], 4: [5]}
- class Job:
- def __init__(self, name, depends=[]):
- self.name = name
- self.depends = depends
- def do(self):
- print("{} do something".format(self.name))
- def depend_order(lst):
- res = []
- dict_lst = {}
- for item in lst:
- dict_lst[item.name] = item.depends
- print(dict_lst)
- flag = False
- for item in dict_lst.keys():
- print('new dict {} list: {}'.format(item, dict_lst[item]))
- if len(dict_lst[item]) == 0:
- flag = True
- res.append(item)
- print(res)
- if flag:
- for other_item in dict_lst.keys():
- if item in dict_lst[other_item]:
- # print(dict_lst[other_item])
- dict_lst[other_item].remove(item)
- print('removed {} from {}'.format(item, other_item))
- flag = False
- return res
- def execute(lst):
- ordered_lst = depend_order(lst)
- print('ordered list is {}'.format(ordered_lst))
- # for item in ordered_lst:
- # item.do()
- if __name__ == '__main__':
- B = Job('B')
- C = Job('C', ['B'])
- D = Job('D', ['C'])
- A = Job('A', ['B', 'C', 'D'])
- # B->C->D->A
- #input = { 2: [3, 4, 5], 3: [4], 4: [5]}
- execute([A, B, C, D])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement