Untitled
unknown
plain_text
2 years ago
1.5 kB
8
Indexable
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())
Editor is loading...