You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.5 KiB
62 lines
2.5 KiB
import numpy as np
|
|
|
|
file = "inputs/day9.input"
|
|
numbers = [x.decode().replace("\n", "") for x in open(file, "rb").readlines()]
|
|
numbers = [[int(x) for x in number] for number in numbers]
|
|
numbers = np.array(numbers)
|
|
|
|
risklevel = 0
|
|
|
|
for x in range(numbers.shape[0]):
|
|
for y in range(numbers.shape[1]):
|
|
if x == 0 and y == 0:
|
|
if numbers[x + 1, y] > numbers[x, y] and numbers[x, y + 1] > numbers[x, y]:
|
|
risklevel += 1 + numbers[x, y]
|
|
elif x == 0 and y == numbers.shape[1] - 1:
|
|
if numbers[x + 1, y] > numbers[x, y] and numbers[x, y - 1] > numbers[x, y]:
|
|
risklevel += 1 + numbers[x, y]
|
|
elif x == numbers.shape[0] - 1 and y == 0:
|
|
if numbers[x - 1, y] > numbers[x, y] and numbers[x, y + 1] > numbers[x, y]:
|
|
risklevel += 1 + numbers[x, y]
|
|
elif x == numbers.shape[0] - 1 and y == numbers.shape[1] - 1:
|
|
if numbers[x - 1, y] > numbers[x, y] and numbers[x, y - 1] > numbers[x, y]:
|
|
risklevel += 1 + numbers[x, y]
|
|
elif x == 0 and y > 0 and y < numbers.shape[1] - 1:
|
|
if (
|
|
numbers[x, y + 1] > numbers[x, y]
|
|
and numbers[x, y - 1] > numbers[x, y]
|
|
and numbers[x + 1, y] > numbers[x, y]
|
|
):
|
|
risklevel += 1 + numbers[x, y]
|
|
elif x == numbers.shape[0] - 1 and y > 0 and y < numbers.shape[1] - 1:
|
|
if (
|
|
numbers[x, y + 1] > numbers[x, y]
|
|
and numbers[x, y - 1] > numbers[x, y]
|
|
and numbers[x - 1, y] > numbers[x, y]
|
|
):
|
|
risklevel += 1 + numbers[x, y]
|
|
elif y == 0 and x > 0 and x < numbers.shape[0] - 1:
|
|
if (
|
|
numbers[x, y + 1] > numbers[x, y]
|
|
and numbers[x - 1, y] > numbers[x, y]
|
|
and numbers[x + 1, y] > numbers[x, y]
|
|
):
|
|
risklevel += 1 + numbers[x, y]
|
|
elif y == numbers.shape[1] - 1 and x > 0 and x < numbers.shape[0] - 1:
|
|
if (
|
|
numbers[x, y - 1] > numbers[x, y]
|
|
and numbers[x - 1, y] > numbers[x, y]
|
|
and numbers[x + 1, y] > numbers[x, y]
|
|
):
|
|
risklevel += 1 + numbers[x, y]
|
|
else:
|
|
if (
|
|
numbers[x, y - 1] > numbers[x, y]
|
|
and numbers[x, y + 1] > numbers[x, y]
|
|
and numbers[x - 1, y] > numbers[x, y]
|
|
and numbers[x + 1, y] > numbers[x, y]
|
|
):
|
|
risklevel += 1 + numbers[x, y]
|
|
|
|
print(risklevel)
|