39 lines
772 B
Python
39 lines
772 B
Python
|
import numpy as np
|
||
|
input = 4455
|
||
|
fuel_cells = np.zeros((300,300), dtype=np.int64)
|
||
|
|
||
|
for y in range(300):
|
||
|
fuel_cells[:,y] = y+1
|
||
|
for x in range(300):
|
||
|
fuel_cells[x,:] *= x+11
|
||
|
fuel_cells += input
|
||
|
for x in range(300):
|
||
|
fuel_cells[x,:] *= x+11
|
||
|
fuel_cells //= 100
|
||
|
fuel_cells %= 10
|
||
|
fuel_cells -= 5
|
||
|
|
||
|
max_power = 0
|
||
|
max_idx = (0,0)
|
||
|
for x in range(298):
|
||
|
for y in range(298):
|
||
|
val = fuel_cells[x:x+3, y:y+3].sum()
|
||
|
if val > max_power:
|
||
|
max_power = val
|
||
|
max_idx = (x+1,y+1)
|
||
|
|
||
|
print(max_idx) # Part 1
|
||
|
|
||
|
|
||
|
max_power = 0
|
||
|
max_idx = (0,0,0)
|
||
|
for x in range(298):
|
||
|
for y in range(298):
|
||
|
for s in range(3, 301-max(x,y)):
|
||
|
val = fuel_cells[x:x+s, y:y+s].sum()
|
||
|
if val > max_power:
|
||
|
max_power = val
|
||
|
max_idx = (x+1,y+1,s)
|
||
|
|
||
|
print(max_idx) # Part 2
|