import numpy as np
with open('data-2022-08.txt', 'r') as f:
inp = f.read().splitlines()Advent of Code 2022 Day 8
— Day 8: Treetop Tree House —
We would like to build a tree house, but want to make sure it is hidden.
Consider your map; how many trees are visible from outside the grid?
numpy!
trees = [list(map(int, x)) for x in inp]
tre = np.array(trees)
ts = 2*99 + 2*97
for x in range(1,98):
for y in range(1,98):
t = tre[x,y]
if (t > np.max(tre[:x,y]) or
t > np.max(tre[x,:y]) or
t > np.max(tre[x+1:,y]) or
t > np.max(tre[x,y+1:])
):
ts += 1
ts
# 16811681
— Part Two —
Calculate how far you can see from each tree for its “scenic score”
Consider each tree on your map. What is the highest scenic score possible for any tree?
view = np.zeros((99,99))
def treeview(x, y):
t = tre[x,y]
u = 0
d = 0
l = 0
r = 0
# up
if x == 1:
u = 1
else:
for i in range(x-1, -1, -1):
if t > tre[i, y]:
u += 1
if t <= tre[i, y]:
u += 1
break
# down
if x == 97:
d = 1
else:
for i in range(x+1, 99, 1):
if t > tre[i, y]:
d += 1
if t <= tre[i, y]:
d += 1
break
# left
if y == 1:
l = 1
else:
for i in range(y-1, -1, -1):
if t > tre[x, i]:
l += 1
if t <= tre[x, i]:
l += 1
break
# right
if y == 97:
r = 1
else:
for i in range(y+1, 99, 1):
if t > tre[x, i]:
r += 1
if t <= tre[x, i]:
r += 1
break
# return
# print('u: ' + str(u))
# print('d: ' + str(d))
# print('l: ' + str(l))
# print('r: ' + str(r))
# print()
return int(u * d * l * r)
for x in range(1,97):
for y in range(1,97):
view[x, y] = treeview(x, y)
int(np.max(view))
# 201684201684