Update 2015 solutions

This commit is contained in:
2024-10-20 15:19:25 -04:00
parent 87ab42743e
commit e73fa3bae7
16 changed files with 362 additions and 411 deletions

View File

@@ -1,42 +1,27 @@
from lib import *
from typing import Iterator
from lib import get_data
from itertools import permutations
# Just for fun instead of using itertools.permutations.
def permutations(xs) -> Iterator:
assert len(xs) > 0
if len(xs) == 1:
yield xs
else:
x = xs.pop()
for p in permutations(xs):
for i in range(len(p) + 1):
pn = list(p)
pn.insert(i, x)
yield pn
part_1 = False
data = open(0).read()
data = get_data(__file__)
dists = {}
nodes = set()
for line in data.splitlines():
path, dist = line.split(" = ")
dist = int(dist)
a, b = path.split(" to ")
a, _, b, _, d = line.split()
nodes.add(a)
nodes.add(b)
dist = int(d)
dists[(a, b)] = dist
dists[(b, a)] = dist
if part_1:
mdist = 10**12
for route in permutations(nodes):
dist = sum([dists[(route[i], route[i + 1])] for i in range(len(route) - 1)])
mdist = min(dist, mdist)
print(mdist)
else:
mdist = 0
for route in permutations(nodes):
dist = sum([dists[(route[i], route[i + 1])] for i in range(len(route) - 1)])
mdist = max(dist, mdist)
print(mdist)
d_min = 10**12
d_max = 0
for p in permutations(list(nodes)):
d = 0
for i in range(len(p) - 1):
a, b = p[i], p[i + 1]
d += dists[(a, b)]
d_min = min(d, d_min)
d_max = max(d, d_max)
print(d_min)
print(d_max)