wow that was taking forever
This commit is contained in:
parent
30049c7d4b
commit
de21254159
59
10/10.py
Normal file
59
10/10.py
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
def read_file():
|
||||||
|
with open("input.txt","r") as f:
|
||||||
|
return [int(x) for x in f.read().split('\n')]
|
||||||
|
|
||||||
|
def part1(adapters):
|
||||||
|
jolts = [0] + sorted(adapters) # j(port) = 0
|
||||||
|
d1 = 0
|
||||||
|
d3 = 1 # j(device) = max + 3
|
||||||
|
i = 0
|
||||||
|
while i <= len(adapters):
|
||||||
|
difference = jolts[i] - jolts[i-1]
|
||||||
|
if difference == 1:
|
||||||
|
d1 += 1
|
||||||
|
elif difference == 2:
|
||||||
|
d2 += 1
|
||||||
|
elif difference == 3:
|
||||||
|
d3 += 1
|
||||||
|
i += 1
|
||||||
|
return d1 * d3
|
||||||
|
|
||||||
|
"""
|
||||||
|
def find_all_paths(graph, start, end, path=[]):
|
||||||
|
path = path + [start]
|
||||||
|
if start == end:
|
||||||
|
return [path]
|
||||||
|
if start not in graph:
|
||||||
|
return []
|
||||||
|
paths = []
|
||||||
|
for node in graph[start]:
|
||||||
|
if node not in path:
|
||||||
|
newpaths = find_all_paths(graph, node, end, path)
|
||||||
|
for newpath in newpaths:
|
||||||
|
paths.append(newpath)
|
||||||
|
return paths
|
||||||
|
"""
|
||||||
|
|
||||||
|
def part2(adapters):
|
||||||
|
jolts = [0] + sorted(adapters)
|
||||||
|
from collections import Counter
|
||||||
|
dp = Counter()
|
||||||
|
dp[0] = 1
|
||||||
|
jolts = sorted(adapters)
|
||||||
|
jolts.append(jolts[-1] + 3)
|
||||||
|
for j in jolts:
|
||||||
|
dp[j] = dp[j-1] + dp[j-2] + dp[j-3]
|
||||||
|
return dp[jolts[-1]]
|
||||||
|
"""
|
||||||
|
graph = {}
|
||||||
|
for i, joltage in enumerate(jolts):
|
||||||
|
graph[joltage] = [x for x in jolts[i+1:i+4] if 0 < x - joltage <= 3] # scan next 3, assuming diff of +1 +1 +1 at most
|
||||||
|
return len( find_all_paths( graph, 0, max(jolts) ) )
|
||||||
|
"""
|
||||||
|
|
||||||
|
def main():
|
||||||
|
adapters = read_file()
|
||||||
|
print(part1(adapters), part2(adapters))
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
98
10/input.txt
Normal file
98
10/input.txt
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
35
|
||||||
|
111
|
||||||
|
135
|
||||||
|
32
|
||||||
|
150
|
||||||
|
5
|
||||||
|
106
|
||||||
|
154
|
||||||
|
41
|
||||||
|
7
|
||||||
|
27
|
||||||
|
117
|
||||||
|
109
|
||||||
|
63
|
||||||
|
64
|
||||||
|
21
|
||||||
|
138
|
||||||
|
98
|
||||||
|
40
|
||||||
|
71
|
||||||
|
144
|
||||||
|
13
|
||||||
|
66
|
||||||
|
48
|
||||||
|
12
|
||||||
|
55
|
||||||
|
119
|
||||||
|
103
|
||||||
|
54
|
||||||
|
78
|
||||||
|
65
|
||||||
|
112
|
||||||
|
39
|
||||||
|
128
|
||||||
|
53
|
||||||
|
140
|
||||||
|
77
|
||||||
|
34
|
||||||
|
28
|
||||||
|
81
|
||||||
|
151
|
||||||
|
125
|
||||||
|
85
|
||||||
|
124
|
||||||
|
2
|
||||||
|
99
|
||||||
|
131
|
||||||
|
59
|
||||||
|
60
|
||||||
|
6
|
||||||
|
94
|
||||||
|
33
|
||||||
|
42
|
||||||
|
93
|
||||||
|
14
|
||||||
|
141
|
||||||
|
92
|
||||||
|
38
|
||||||
|
104
|
||||||
|
9
|
||||||
|
29
|
||||||
|
100
|
||||||
|
52
|
||||||
|
19
|
||||||
|
147
|
||||||
|
49
|
||||||
|
74
|
||||||
|
70
|
||||||
|
84
|
||||||
|
113
|
||||||
|
120
|
||||||
|
91
|
||||||
|
97
|
||||||
|
17
|
||||||
|
45
|
||||||
|
139
|
||||||
|
90
|
||||||
|
116
|
||||||
|
149
|
||||||
|
129
|
||||||
|
87
|
||||||
|
69
|
||||||
|
20
|
||||||
|
24
|
||||||
|
148
|
||||||
|
18
|
||||||
|
58
|
||||||
|
123
|
||||||
|
76
|
||||||
|
118
|
||||||
|
130
|
||||||
|
132
|
||||||
|
75
|
||||||
|
110
|
||||||
|
105
|
||||||
|
1
|
||||||
|
8
|
||||||
|
86
|
11
10/input_sample.txt
Normal file
11
10/input_sample.txt
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
16
|
||||||
|
10
|
||||||
|
15
|
||||||
|
5
|
||||||
|
1
|
||||||
|
11
|
||||||
|
7
|
||||||
|
19
|
||||||
|
6
|
||||||
|
12
|
||||||
|
4
|
Loading…
Reference in a new issue