Solved super late but:
shared:
def clean_input(data): relationships = defaultdict(set) for line in data: _, parent, child = re.findall(r'[A-Z]', line) relationships[child].add(parent) if parent not in relationships: relationships[parent] = set() return relationships with open ('input.txt', 'r') as f: relationships = clean_input(f)
p1
def find_order(relationships): done = [] while len(done) < len(relationships): ready = [] for node in relationships: if node not in done and relationships[node].issubset(done): ready.append(node) done.append(sorted(ready)[0]) return done print(''.join(find_order(relationships)))
p2
def letter_to_number(letter): return ascii_uppercase.index(letter) + 61 def find_time(relationships): total = 0 done = [] N_WORKERS = 5 enqueued = [None] * N_WORKERS while len(done) < len(relationships): print(enqueued) for i, value in enumerate(enqueued): if value: letter, time = value if time == 1: done.append(letter) enqueued[i] = None else: enqueued[i][1] -= 1 for node in relationships: letters_enqueued = [i[0] for i in enqueued if i] if node not in done and node not in letters_enqueued and relationships[node].issubset(done) and None in enqueued: enqueued[enqueued.index(None)] = [node, letter_to_number(node)] total += 1 return total - 1 print(find_time(relationships))
Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink.
Hide child comments as well
Confirm
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Solved super late but:
shared:
p1
p2