Browse Source

Day 11.

master
Chris Smith 6 years ago
parent
commit
90fa522699
2 changed files with 36 additions and 0 deletions
  1. 35
    0
      11.py
  2. 1
    0
      data/11.txt

+ 35
- 0
11.py View File

@@ -0,0 +1,35 @@
1
+import collections
2
+
3
+reductions = [
4
+    # Simplifications
5
+    [ 'n', 'se', 'ne'],
6
+    [ 'n', 'sw', 'nw'],
7
+    [ 's', 'ne', 'se'],
8
+    [ 's', 'nw', 'sw'],
9
+    ['sw', 'se',  's'],
10
+    ['nw', 'ne',  'n'],
11
+    # Opposites
12
+    [ 'n',  's', '--'],
13
+    ['sw', 'ne', '--'],
14
+    ['nw', 'se', '--'],
15
+]
16
+
17
+
18
+def distance(steps):
19
+    counts = collections.defaultdict(lambda: 0, collections.Counter(steps))
20
+    last_counts = dict()
21
+    while counts != last_counts:
22
+        last_counts = dict(counts)
23
+        for a, b, result in reductions:
24
+            count = min(counts[a], counts[b])
25
+            counts[a] -= count
26
+            counts[b] -= count
27
+            counts[result] += count
28
+    counts['--'] = 0
29
+    return sum(counts.values())
30
+
31
+
32
+with open('data/11.txt', 'r') as file:
33
+    steps = file.readline().strip().split(',')
34
+    print(f'Part one: {distance(steps)}')
35
+    print(f'Part two: {max(distance(steps[:i]) for i in range(len(steps)))}')

+ 1
- 0
data/11.txt
File diff suppressed because it is too large
View File


Loading…
Cancel
Save