Browse Source

🧃

master
Roderic Day 2 years ago
parent
commit
30aeaf870f
1 changed files with 24 additions and 0 deletions
  1. +24
    -0
      y2022/p16.py

+ 24
- 0
y2022/p16.py View File

graph[pos] = {k: 1 for k in adjs} graph[pos] = {k: 1 for k in adjs}
old = {k: v.copy() for k, v in graph.items()} old = {k: v.copy() for k, v in graph.items()}



for k in graph: for k in graph:
graph[k][k] = 0 graph[k][k] = 0
edge = {k} edge = {k}
if ans > ans1: if ans > ans1:
ans1 = ans ans1 = ans
print(ans1) print(ans1)


def solve2(pending, total, pos_1, t_left_1, pos_2, t_left_2):
if not pending:
yield total
else:
if ans2 > total + sum(vals[p] for p in pending) * max(t_left_1, t_left_2):
return
if t_left_1 >= t_left_2:
# move 1
for contrib, pos, t_left in tic(pending, pos_1, t_left_1):
yield from solve2(pending - {pos}, total + contrib, pos, t_left, pos_2, t_left_2)
else:
# move 2
for contrib, pos, t_left in tic(pending, pos_2, t_left_2):
yield from solve2(pending - {pos}, total + contrib, pos_1, t_left_1, pos, t_left)


ans2 = 0
for ans in solve2(set(vals), 0, 'AA', 26, 'AA', 26):
if ans > ans2:
ans2 = ans
print(ans2)

Loading…
Cancel
Save