43 lines
894 B
Python
43 lines
894 B
Python
from collections import defaultdict
|
|
from itertools import permutations
|
|
|
|
data1, data2 = open('input.txt').read().strip().split("\n\n")
|
|
|
|
rules = defaultdict(list)
|
|
for x in data1.split('\n'):
|
|
v, k = x.split('|')
|
|
rules[k].append(v)
|
|
|
|
chains = [x.split(",") for x in data2.split('\n')]
|
|
def correct(c):
|
|
for i, k in enumerate(c):
|
|
y = c[i+1:]
|
|
if any(x in y for x in rules[k]):
|
|
return False
|
|
return True
|
|
|
|
|
|
s = 0
|
|
incorrect = []
|
|
for c in chains:
|
|
if correct(c):
|
|
s += int(c[len(c)//2])
|
|
else:
|
|
incorrect.append(c)
|
|
print(s)
|
|
|
|
s = 0
|
|
for c in incorrect:
|
|
while not correct(c):
|
|
nc = []
|
|
for i, k in enumerate(c):
|
|
n = [x for x in rules[k] if x in set(c[i+1:])]
|
|
for x in n:
|
|
c.remove(x)
|
|
nc.extend(n)
|
|
nc.append(k)
|
|
c = nc
|
|
|
|
s += int(c[len(c)//2])
|
|
print(s)
|