05.1, 05.2 python
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user