Skip to content

Commit b94ad7a

Browse files
committed
2018 Day 11
1 parent 05c3f42 commit b94ad7a

File tree

2 files changed

+81
-0
lines changed

2 files changed

+81
-0
lines changed

2018/11a.py

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
SERIAL = 7511
2+
# SERIAL = 57
3+
4+
5+
def compute_power_level(x, y):
6+
id_ = x + 10
7+
level = id_ * y + SERIAL
8+
level *= id_
9+
level = level % 1000 // 100
10+
return level - 5
11+
12+
13+
def sum_3x3(x, y, matrix):
14+
return sum(matrix[y_][x_] for x_ in range(x, x + 3) for y_ in range(y, y + 3))
15+
16+
17+
def main():
18+
# print(compute_power_level(122,79))
19+
# return
20+
matrix = []
21+
for y in range(1, 301):
22+
matrix.append([compute_power_level(x, y) for x in range(1, 301)])
23+
# print(matrix)
24+
# return
25+
print(
26+
max(
27+
(
28+
(x, y, sum_3x3(x, y, matrix))
29+
for x in range(0, 298)
30+
for y in range(0, 298)
31+
),
32+
key=lambda x: x[2],
33+
)[:2]
34+
)
35+
36+
37+
main()

2018/11b.py

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
SERIAL = 7511
2+
3+
4+
def compute_power_level(x, y):
5+
id_ = x + 10
6+
level = id_ * y + SERIAL
7+
level *= id_
8+
level = level % 1000 // 100
9+
return level - 5
10+
11+
12+
def sum_any(x, y, matrix, size):
13+
return sum(matrix[y_][x_] for x_ in range(x, x + size) for y_ in range(y, y + size))
14+
15+
16+
def main():
17+
matrix = []
18+
for y in range(1, 301):
19+
matrix.append([compute_power_level(x, y) for x in range(1, 301)])
20+
21+
remember = {(x, y, 1): matrix[y][x] for x in range(300) for y in range(300)}
22+
23+
max_entry, max_size = max(remember.items(), key=lambda x: x[1])
24+
25+
for x in range(300):
26+
for y in range(300):
27+
for size in range(2, 301):
28+
if x + size > 300 or y + size > 300:
29+
continue
30+
entry = (
31+
remember[(x, y, size - 1)]
32+
+ sum(matrix[y+size-1][x_] for x_ in range(x, x + size))
33+
+ sum(matrix[y_][x+size-1] for y_ in range(y, y + size - 1))
34+
)
35+
remember[(x, y, size)] = entry
36+
37+
if entry > max_size:
38+
max_size = entry
39+
max_entry = (x, y, size)
40+
print(f'{x}')
41+
print(max_entry)
42+
43+
44+
main()

0 commit comments

Comments
 (0)