2022 Day 8 Python rough
This commit is contained in:
parent
688e4a7eaa
commit
d7d7b4da19
|
@ -0,0 +1,66 @@
|
|||
import numpy as np
|
||||
|
||||
with open('input/08', 'r') as file:
|
||||
lines = file.read().strip().split('\n')
|
||||
numbers = np.array([[int(x) for x in line] for line in lines])
|
||||
|
||||
w, h = numbers.shape
|
||||
seen_arr = np.zeros_like(numbers)
|
||||
seen_arr[0,:] = 1
|
||||
seen_arr[-1,:] = 1
|
||||
seen_arr[:,0] = 1
|
||||
seen_arr[:,-1] = 1
|
||||
|
||||
for x in range(w):
|
||||
highest_seen = numbers[x,0]
|
||||
for y in range(1, h):
|
||||
n = numbers[x,y]
|
||||
if n > highest_seen:
|
||||
seen_arr[x,y] = 1
|
||||
highest_seen = n
|
||||
highest_seen = numbers[x,h-1]
|
||||
for y in range(h-2, 0, -1):
|
||||
n = numbers[x,y]
|
||||
if n > highest_seen:
|
||||
seen_arr[x,y] = 1
|
||||
highest_seen = n
|
||||
for y in range(h):
|
||||
highest_seen = numbers[0,y]
|
||||
for x in range(1, w):
|
||||
n = numbers[x,y]
|
||||
if n > highest_seen:
|
||||
seen_arr[x,y] = 1
|
||||
highest_seen = n
|
||||
highest_seen = numbers[w-1,y]
|
||||
for x in range(w-2, 0, -1):
|
||||
n = numbers[x,y]
|
||||
if n > highest_seen:
|
||||
seen_arr[x,y] = 1
|
||||
highest_seen = n
|
||||
print(f'Part 1: {seen_arr.sum()}')
|
||||
|
||||
seen_arr = np.zeros_like(numbers)
|
||||
for x in range(1,w-1):
|
||||
for y in range(1,h-1):
|
||||
seen = np.zeros(4, dtype=np.int32)
|
||||
treehouse = numbers[x,y]
|
||||
for x1 in range(x+1, w):
|
||||
seen[0] += 1
|
||||
if numbers[x1,y] >= treehouse:
|
||||
break
|
||||
for x1 in range(x-1, -1, -1):
|
||||
seen[1] += 1
|
||||
if numbers[x1,y] >= treehouse:
|
||||
break
|
||||
for y1 in range(y+1, h):
|
||||
seen[2] += 1
|
||||
if numbers[x,y1] >= treehouse:
|
||||
break
|
||||
for y1 in range(y-1, -1, -1):
|
||||
seen[3] += 1
|
||||
if numbers[x,y1] >= treehouse:
|
||||
break
|
||||
score = seen.prod()
|
||||
# print(f'{x},{y}: {seen} = {score}')
|
||||
seen_arr[x,y] = score
|
||||
print(f'Part 2: {seen_arr.max()}')
|
Loading…
Reference in New Issue