Completed day 9
This commit is contained in:
parent
d830430717
commit
be4f880cd3
|
@ -0,0 +1,16 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
code = []
|
||||
with open("input") as fh:
|
||||
for ln in fh:
|
||||
code.append(int(ln))
|
||||
|
||||
def valid(code, o):
|
||||
for i in range(o - 25, o - 1):
|
||||
for j in range(i, o):
|
||||
if code[i] + code[j] == code[o]:
|
||||
return True
|
||||
|
||||
for o in range(25, len(code)):
|
||||
if not valid(code, o):
|
||||
print(o, code[o])
|
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/python3
|
||||
import sys
|
||||
|
||||
code = []
|
||||
with open("input") as fh:
|
||||
for ln in fh:
|
||||
code.append(int(ln))
|
||||
|
||||
def valid(code, o):
|
||||
for i in range(o - 25, o - 1):
|
||||
for j in range(i, o):
|
||||
if code[i] + code[j] == code[o]:
|
||||
return True
|
||||
|
||||
for o in range(25, len(code)):
|
||||
if not valid(code, o):
|
||||
target = code[o]
|
||||
break
|
||||
|
||||
for i in range(len(code)):
|
||||
for j in range(i + 1, len(code)):
|
||||
s = sum(code[i:j+1])
|
||||
if s == target:
|
||||
smallest = min(code[i:j+1])
|
||||
largest = max(code[i:j+1])
|
||||
print(smallest + largest)
|
||||
sys.exit(0)
|
||||
elif s > target:
|
||||
break # adding more numbers won't help
|
|
@ -0,0 +1,94 @@
|
|||
138
|
||||
3
|
||||
108
|
||||
64
|
||||
92
|
||||
112
|
||||
44
|
||||
53
|
||||
27
|
||||
20
|
||||
23
|
||||
77
|
||||
119
|
||||
62
|
||||
121
|
||||
11
|
||||
2
|
||||
37
|
||||
148
|
||||
34
|
||||
83
|
||||
24
|
||||
10
|
||||
79
|
||||
96
|
||||
98
|
||||
127
|
||||
7
|
||||
115
|
||||
19
|
||||
16
|
||||
78
|
||||
133
|
||||
61
|
||||
82
|
||||
91
|
||||
145
|
||||
39
|
||||
33
|
||||
13
|
||||
97
|
||||
55
|
||||
141
|
||||
1
|
||||
134
|
||||
40
|
||||
71
|
||||
54
|
||||
103
|
||||
101
|
||||
26
|
||||
47
|
||||
90
|
||||
72
|
||||
126
|
||||
124
|
||||
110
|
||||
131
|
||||
58
|
||||
12
|
||||
142
|
||||
105
|
||||
63
|
||||
75
|
||||
50
|
||||
95
|
||||
69
|
||||
25
|
||||
68
|
||||
144
|
||||
86
|
||||
132
|
||||
89
|
||||
128
|
||||
135
|
||||
65
|
||||
125
|
||||
76
|
||||
116
|
||||
32
|
||||
18
|
||||
6
|
||||
38
|
||||
109
|
||||
111
|
||||
30
|
||||
70
|
||||
143
|
||||
104
|
||||
102
|
||||
120
|
||||
31
|
||||
41
|
||||
17
|
|
@ -0,0 +1,26 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
from functools import lru_cache
|
||||
|
||||
adapters = []
|
||||
with open("input") as fh:
|
||||
for ln in fh:
|
||||
adapters.append(int(ln))
|
||||
|
||||
adapters = sorted(adapters)
|
||||
|
||||
@lru_cache(maxsize=None)
|
||||
def count(start, offset):
|
||||
if offset == len(adapters) - 1:
|
||||
return 1
|
||||
n = 0
|
||||
for i in range(offset, len(adapters)):
|
||||
if adapters[i] - start < 1:
|
||||
raise RuntimeError()
|
||||
elif adapters[i] - start <= 3:
|
||||
n += count(adapters[i], i+1)
|
||||
else:
|
||||
break
|
||||
return n
|
||||
|
||||
print(count(0, 0))
|
Loading…
Reference in New Issue