50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
![]() |
#!/usr/bin/env python
|
||
|
|
||
|
SIZE_X=300
|
||
|
SIZE_Y=300
|
||
|
|
||
|
def get_cell_power(x, y, serial):
|
||
|
rack_id = x + 10
|
||
|
power = rack_id * y
|
||
|
power += serial
|
||
|
power *= rack_id
|
||
|
|
||
|
h = str(power)[-3] if power > 100 else '0'
|
||
|
return int(h) - 5
|
||
|
|
||
|
|
||
|
def calculate(serial):
|
||
|
square = dict()
|
||
|
|
||
|
for x in range(1, SIZE_X+1):
|
||
|
for y in range(1, SIZE_Y+1):
|
||
|
p = get_cell_power(x, y, serial)
|
||
|
for dx in range(-2, 1):
|
||
|
cx = x + dx
|
||
|
if cx < 1:
|
||
|
continue
|
||
|
if cx > SIZE_X:
|
||
|
continue
|
||
|
for dy in range(-2, 1):
|
||
|
cy = y + dy
|
||
|
if cy < 1:
|
||
|
continue
|
||
|
if cy > SIZE_Y:
|
||
|
continue
|
||
|
key = "{},{}".format(cx,cy)
|
||
|
if key not in square:
|
||
|
square[key] = 0
|
||
|
square[key] += p
|
||
|
|
||
|
m = max([v for v in square.values()])
|
||
|
cell = [ k for k,v in square.items() if v == m]
|
||
|
print(m)
|
||
|
print(cell)
|
||
|
|
||
|
#calculate(18)
|
||
|
#calculate(42)
|
||
|
calculate(8444)
|
||
|
|
||
|
|
||
|
|