Advent of Code 2020, now in the most terse and awful python possible
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

33 lines
898 B

4 years ago
#!/usr/bin/env python3
from sys import argv
from math import prod
i = open(argv[1]).read().split("\n\n")
r = {x:{c for z in y.split(" or ") for a,b in [map(int, z.split("-"))] for c in range(a,b+1)} for x,y in [x.split(": ") for x in i[0].strip().split("\n")]}
m = [int(x) for x in i[1].strip().split("\n",1)[1].split(",")]
n = [[int(y) for y in x.split(",")] for x in i[2].strip().split("\n")[1:]]
e = 0
p = {x:{*range(len(m))} for x in r}
for t in n:
for f in t:
for l in r:
if f in r[l]:
break
else:
e += f
break
else:
for i,f in enumerate(t):
for l in r:
if f not in r[l]:
p[l].remove(i)
print(e)
d = set()
for l,f in sorted(p.items(), key=lambda x: len(x[1])):
p[l] -= d
d |= f
print(prod(m[list(p[l])[0]] for l in p if l.startswith("departure ")))