summaryrefslogtreecommitdiff
path: root/14_2021.py
diff options
context:
space:
mode:
authorJack Sangdahl <[email protected]>2024-06-15 22:20:32 -0600
committerJack Sangdahl <[email protected]>2024-06-15 22:20:32 -0600
commit8e313e2614c7a0fe5af924febdbacc650e33835e (patch)
tree63426b6942ceebe17708140c972a7d7451bd2f74 /14_2021.py
downloadaoc-8e313e2614c7a0fe5af924febdbacc650e33835e.tar.gz
aoc-8e313e2614c7a0fe5af924febdbacc650e33835e.zip
intial
Diffstat (limited to '14_2021.py')
-rw-r--r--14_2021.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/14_2021.py b/14_2021.py
new file mode 100644
index 0000000..d7a1d64
--- /dev/null
+++ b/14_2021.py
@@ -0,0 +1,27 @@
+import sys
+from collections import Counter
+
+infile = sys.argv[1] if len(sys.argv) > 1 else "day14data.txt"
+S, rules = open(infile).read().split("\n\n")
+R = {}
+
+for line in rules.strip().split("\n"):
+ start, end = line.strip().split(" -> ")
+ R[start] = end
+
+C1 = Counter()
+for i in range(len(S) - 1):
+ C1[S[i] + S[i + 1]] += 1
+
+for t in range(41):
+ if t in [10, 40]:
+ CF = Counter()
+ for k in C1:
+ CF[k[0]] += C1[k]
+ CF[S[-1]] += 1
+ print(max(CF.values()) - min(CF.values()))
+ C2 = Counter()
+ for k in C1:
+ C2[k[0] + R[k]] += C1[k]
+ C2[R[k] + k[1]] += C1[k]
+ C1 = C2