Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- class Project():
- def __init__(self, name, duration, score, deadline, reqs):
- self.name = name
- self.duration = duration
- self.score = score
- self.deadline = deadline
- self.n_contribs = len(reqs)
- self.reqs = reqs
- def __repr__(self):
- return f"{self.name} ({self.deadline}, {self.duration}): {self.reqs}"
- class Contributor():
- def __init__(self, name, skills):
- self.name = name
- self.skills = skills
- self.available_on = 0
- def __repr__(self):
- return f"{self.name} {self.skills}"
- class Skill():
- def __init__(self, name, level):
- self.name = name
- self.level = level
- def __repr__(self):
- return f"{self.name} {self.level}"
- def main(filename):
- with open(filename, 'r') as file:
- lines = file.read().strip().split('\n')
- n_contribs, n_projs = list(map(int, lines.pop(0).split()))
- contribs = []
- projs = []
- contribs_by_skill = {}
- for i in range(n_contribs):
- contrib_name, n_skills = lines.pop(0).split()
- skills = []
- for j in range(int(n_skills)):
- skill_name, level = lines.pop(0).split()
- skills.append(Skill(skill_name, int(level)))
- c = Contributor(contrib_name, skills)
- contribs.append(c)
- for s in c.skills:
- try:
- contribs_by_skill[s.name].append(c)
- except Exception as e:
- contribs_by_skill[s.name] = [c]
- for i in range(n_projs):
- proj_name, duration, score, deadline, n_reqs = lines.pop(0).split()
- reqs = []
- for j in range(int(n_reqs)):
- skill_name, level = lines.pop(0).split()
- reqs.append(Skill(skill_name, int(level)))
- projs.append(Project(proj_name, int(duration), int(score), int(deadline), reqs))
- projs.sort(key=lambda p: (p.deadline, p.duration))
- for p in projs:
- # print(p)
- for r in p.reqs:
- if __name__ == "__main__":
- main(sys.argv[1])
Advertisement
Add Comment
Please, Sign In to add comment