2020 Day 10
This commit is contained in:
parent
0bf886b0fe
commit
d368a2cac3
|
@ -0,0 +1,22 @@
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
# Load input
|
||||||
|
with open('input10', 'r') as f:
|
||||||
|
data = [0] + sorted([int(l) for l in f.readlines()]) # NB: We add the 0J source ourselves
|
||||||
|
n_data = np.array(data)
|
||||||
|
|
||||||
|
# Part 1: Connect all of them together
|
||||||
|
diff = n_data[1:] - n_data[:-1]
|
||||||
|
# Confirm this by multiplying the 1J differences with the 3J differences.
|
||||||
|
# NB: we treat the internal adapter 3J difference as an off-by-one for simplicity.
|
||||||
|
print('Part 1: ', (diff==1).sum() * (1 + (diff==3).sum()))
|
||||||
|
|
||||||
|
# Part 2: Find the number of possible chains
|
||||||
|
n_possibilities = {data[-1]: 1} # The highest one can only connect to the internal adapter.
|
||||||
|
for i in reversed(data[:-1]): # We've already done the highest one as a special case
|
||||||
|
delta = n_data - i
|
||||||
|
p = 0
|
||||||
|
for n in n_data[np.logical_and(delta<=3, delta>0)]: # You could probably plug two of the same together, but our input doesn't require us to handle that, and this simplifies things ;)
|
||||||
|
p += n_possibilities[n]
|
||||||
|
n_possibilities[i] = p
|
||||||
|
print('Part 2: ', n_possibilities[0])
|
|
@ -0,0 +1,103 @@
|
||||||
|
73
|
||||||
|
114
|
||||||
|
100
|
||||||
|
122
|
||||||
|
10
|
||||||
|
141
|
||||||
|
89
|
||||||
|
70
|
||||||
|
134
|
||||||
|
2
|
||||||
|
116
|
||||||
|
30
|
||||||
|
123
|
||||||
|
81
|
||||||
|
104
|
||||||
|
42
|
||||||
|
142
|
||||||
|
26
|
||||||
|
15
|
||||||
|
92
|
||||||
|
56
|
||||||
|
60
|
||||||
|
3
|
||||||
|
151
|
||||||
|
11
|
||||||
|
129
|
||||||
|
167
|
||||||
|
76
|
||||||
|
18
|
||||||
|
78
|
||||||
|
32
|
||||||
|
110
|
||||||
|
8
|
||||||
|
119
|
||||||
|
164
|
||||||
|
143
|
||||||
|
87
|
||||||
|
4
|
||||||
|
9
|
||||||
|
107
|
||||||
|
130
|
||||||
|
19
|
||||||
|
52
|
||||||
|
84
|
||||||
|
55
|
||||||
|
69
|
||||||
|
71
|
||||||
|
83
|
||||||
|
165
|
||||||
|
72
|
||||||
|
156
|
||||||
|
41
|
||||||
|
40
|
||||||
|
1
|
||||||
|
61
|
||||||
|
158
|
||||||
|
27
|
||||||
|
31
|
||||||
|
155
|
||||||
|
25
|
||||||
|
93
|
||||||
|
166
|
||||||
|
59
|
||||||
|
108
|
||||||
|
98
|
||||||
|
149
|
||||||
|
124
|
||||||
|
65
|
||||||
|
77
|
||||||
|
88
|
||||||
|
46
|
||||||
|
14
|
||||||
|
64
|
||||||
|
39
|
||||||
|
140
|
||||||
|
95
|
||||||
|
113
|
||||||
|
54
|
||||||
|
66
|
||||||
|
137
|
||||||
|
101
|
||||||
|
22
|
||||||
|
82
|
||||||
|
21
|
||||||
|
131
|
||||||
|
109
|
||||||
|
45
|
||||||
|
150
|
||||||
|
94
|
||||||
|
36
|
||||||
|
20
|
||||||
|
33
|
||||||
|
49
|
||||||
|
146
|
||||||
|
157
|
||||||
|
99
|
||||||
|
7
|
||||||
|
53
|
||||||
|
161
|
||||||
|
115
|
||||||
|
127
|
||||||
|
152
|
||||||
|
128
|
Loading…
Reference in New Issue