Day 14 (minified)
This commit is contained in:
@@ -16,9 +16,8 @@ combinations = Counter(first[a:a+2] for a in range(len(first)-1))
|
|||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
combinations = {k: sum_val for k, v in repl.items() if (sum_val := sum(combinations.get(x, 0) for x in v)) > 0}
|
combinations = {k: sum_val for k, v in repl.items() if (sum_val := sum(combinations.get(x, 0) for x in v)) > 0}
|
||||||
|
|
||||||
letters = ((l, cnt) for key, cnt in combinations.items() for l in key)
|
letters = ((key[0], cnt) for key, cnt in combinations.items())
|
||||||
letters = {k: sum(map(itemgetter(1), v)) for k, v in groupby(sorted(letters), itemgetter(0))}
|
letters = {k: sum(map(itemgetter(1), v)) for k, v in groupby(sorted(letters), itemgetter(0))}
|
||||||
letters[first[0]] += 1
|
|
||||||
letters[first[-1]] += 1
|
letters[first[-1]] += 1
|
||||||
|
|
||||||
print((max(letters.values()) - min(letters.values())) // 2)
|
print(max(letters.values()) - min(letters.values()))
|
||||||
|
|||||||
4
day14/part2.min.py
Normal file
4
day14/part2.min.py
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import collections as o;import itertools as i;l=[x.strip() for x in open("input.txt")];f=l[0];r=[(k,[*(x[1]for x in v)])for k,v in i.groupby(sorted(v for x in l[2:]for v in[(x[0]+x[-1],x[:2]),(x[-1]+x[1],x[:2])]),lambda x:x[0])];c=o.Counter(f[i:i+2]for i in range(len(f)-1))
|
||||||
|
for _ in range(40):c={k:sum_val for k,v in r if(sum_val:=sum(c.get(x,0)for x in v))>0}
|
||||||
|
e={k:sum(x[1]for x in v)for k,v in i.groupby(sorted([*c.items(),(f[-1],1)]),lambda x:x[0][0])};print(max(e.values())-min(e.values()))
|
||||||
@@ -9,16 +9,14 @@ first = next(lines)
|
|||||||
next(lines)
|
next(lines)
|
||||||
|
|
||||||
repl = (re.match(r"([A-Z]{2}) -> ([A-Z])", line).groups() for line in lines)
|
repl = (re.match(r"([A-Z]{2}) -> ([A-Z])", line).groups() for line in lines)
|
||||||
repl = (v for (a, b), insert in repl for v in [(a + insert, a + b), (insert + b, a + b)])
|
repl = (v for (a, b), m in repl for v in [(a+m, a+b), (m+b, a+b)])
|
||||||
repl = {k: list(map(itemgetter(1), v)) for k, v in groupby(sorted(repl), itemgetter(0))}
|
repl = {k: list(map(itemgetter(1), v)) for k, v in groupby(sorted(repl), itemgetter(0))}
|
||||||
|
|
||||||
combinations = Counter(first[a:a+2] for a in range(len(first)-1))
|
combinations = Counter(first[i:i+2] for i in range(len(first)-1))
|
||||||
for _ in range(40):
|
for _ in range(40):
|
||||||
combinations = {k: sum_val for k, v in repl.items() if (sum_val := sum(combinations.get(x, 0) for x in v)) > 0}
|
combinations = {k: sum_val for k, v in repl.items() if (sum_val := sum(combinations.get(x, 0) for x in v)) > 0}
|
||||||
|
|
||||||
letters = ((l, cnt) for key, cnt in combinations.items() for l in key)
|
letters = {k: sum(map(itemgetter(1), v)) for k, v in groupby(sorted(combinations.items()), lambda x: x[0][0])}
|
||||||
letters = {k: sum(map(itemgetter(1), v)) for k, v in groupby(sorted(letters), itemgetter(0))}
|
|
||||||
letters[first[0]] += 1
|
|
||||||
letters[first[-1]] += 1
|
letters[first[-1]] += 1
|
||||||
|
|
||||||
print((max(letters.values()) - min(letters.values())) // 2)
|
print(max(letters.values()) - min(letters.values()))
|
||||||
|
|||||||
Reference in New Issue
Block a user