nord vpnnord vpn
Ad

Untitled

mail@pastecode.io avatar
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())


nord vpnnord vpn
Ad