Untitled
unknown
plain_text
a month ago
1.5 kB
2
Indexable
Never
class Process: def __init__(self, time: int, related: list = []): self.time = time self.related = related self.is_completed = False self.time_spent = 0 def one_second(self): if all([process.is_completed for process in self.related]) and not self.is_completed: # [False, False] if self.time_spent == self.time: self.is_completed = True return self.time_spent += 1 class Program: def __init__(self, processes: list[Process]): self.processes = sorted(processes, key=lambda process: int(process.is_completed)) def start_program(self): time_spent = 0 while not((all([process.is_completed for process in self.processes])) or all([(process.time_spent / process.time) == 1 for process in self.processes])): list(map(lambda p: p.one_second(), self.processes)) print(self.processes) time_spent += 1 return time_spent processes = [] with open("22.txt") as file: lines = file.readlines() for line in lines: processes.append( Process( time=int(line.split()[0]) ) ) for i in range(len(lines)): if lines[i].split()[1] != '0': related = lines[i].split()[1].split(";") processes[i].related = [processes[int(j) - 1] for j in related] program = Program(processes) print(program.start_program())