[py] Port 2018_11
This commit is contained in:
parent
5378a7f680
commit
39982ce5b5
3 changed files with 80 additions and 80 deletions
78
py/aoc/y2018/d11.py
Normal file
78
py/aoc/y2018/d11.py
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
# PART 1
|
||||
|
||||
|
||||
def nth_digit(num, pos):
|
||||
# nth_digit(1234, 0) = 123[4] = 4
|
||||
# nth_digit(1234, 2) = 1[2]34 = 2
|
||||
# nth_digit(1234, 4) = [0]1234 = 0
|
||||
|
||||
pos += 1
|
||||
s = ("{:0" + str(pos) + "}").format(num) # UGLY!
|
||||
n = s[-pos]
|
||||
return int(n)
|
||||
|
||||
|
||||
def power_level(number, x, y):
|
||||
rack_id = x + 10
|
||||
level = rack_id * y
|
||||
level += number
|
||||
level *= rack_id
|
||||
level = nth_digit(level, 2) # 100-er digit
|
||||
level -= 5
|
||||
return level
|
||||
|
||||
|
||||
def init_grid(number):
|
||||
grid = {}
|
||||
for x in range(1, 300 + 1):
|
||||
for y in range(1, 300 + 1):
|
||||
grid[(x, y)] = power_level(number, x, y)
|
||||
return grid
|
||||
|
||||
|
||||
def power_of_square(grid, x, y):
|
||||
power = 0
|
||||
for dx in range(3):
|
||||
for dy in range(3):
|
||||
power += grid[(x + dx, y + dy)]
|
||||
return power
|
||||
|
||||
|
||||
def find_max_power(grid):
|
||||
max_power = 0
|
||||
max_coords = None
|
||||
|
||||
for x in range(1, 300 - 2 + 1):
|
||||
for y in range(1, 300 - 2 + 1):
|
||||
power = power_of_square(grid, x, y)
|
||||
if power > max_power:
|
||||
max_power = power
|
||||
max_coords = (x, y)
|
||||
|
||||
return max_coords
|
||||
|
||||
|
||||
# PART 2
|
||||
|
||||
|
||||
def square_power(grid, x, y, size):
|
||||
pass
|
||||
|
||||
|
||||
def max_square(grid):
|
||||
max_power = 0
|
||||
max_coords = None
|
||||
max_size = None
|
||||
|
||||
for size in range(1, 300 + 1):
|
||||
for x in range(1, 300 + 1 - (size - 1)):
|
||||
for y in range(1, 300 + 1 - (size - 1)):
|
||||
pass
|
||||
|
||||
|
||||
def solve(inputstr):
|
||||
number = int(inputstr.strip())
|
||||
grid = init_grid(number)
|
||||
x, y = find_max_power(grid)
|
||||
print(f"Part 1: {x},{y}")
|
||||
print(f"Part 2: NYI")
|
||||
Loading…
Add table
Add a link
Reference in a new issue