Bläddra i källkod

Solve 2020 day 10

Taddeus Kroes 5 år sedan
förälder
incheckning
49f874a258
2 ändrade filer med 142 tillägg och 0 borttagningar
  1. 35 0
      2020/10_jolts.py
  2. 107 0
      2020/input/10

+ 35 - 0
2020/10_jolts.py

@@ -0,0 +1,35 @@
+#!/usr/bin/env python3
+import sys
+from functools import lru_cache
+from itertools import combinations
+
+def diffs(adapters):
+    prev = 0
+    for jolts in adapters:
+        yield jolts - prev
+        prev = jolts
+    yield 3
+
+def mul_diffs(adapters):
+    d = list(diffs(adapters))
+    return d.count(1) * d.count(3)
+
+def arrangements(adapters):
+    graph = {}
+    for a, b in combinations([0] + adapters, 2):
+        if b - a <= 3:
+            graph.setdefault(a, []).append(b)
+
+    @lru_cache(maxsize=None)
+    def walk(node):
+        if node == adapters[-1]:
+            return 1
+        elif not graph[node]:
+            return 0
+        return sum(map(walk, graph[node]))
+
+    return walk(0)
+
+adapters = sorted(map(int, sys.stdin))
+print(mul_diffs(adapters))
+print(arrangements(adapters))

+ 107 - 0
2020/input/10

@@ -0,0 +1,107 @@
+105
+124
+42
+52
+71
+41
+1
+85
+148
+90
+155
+112
+35
+134
+145
+39
+161
+160
+34
+54
+15
+165
+8
+20
+46
+49
+108
+151
+60
+7
+48
+154
+63
+147
+132
+98
+158
+33
+137
+45
+140
+121
+22
+62
+111
+141
+167
+131
+74
+93
+2
+142
+113
+21
+162
+61
+3
+19
+101
+9
+102
+115
+70
+12
+84
+6
+114
+107
+97
+133
+64
+80
+78
+91
+79
+14
+168
+87
+159
+30
+94
+77
+40
+125
+47
+27
+38
+166
+86
+26
+23
+67
+127
+28
+16
+169
+13
+92
+106
+57
+118
+126
+83
+146
+29
+130
+53