Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- with open("input.txt") as file:
- data=[[tree for tree in grid.strip()] for grid in file]
- def visible(x,y,grid):
- height=grid[x][y]
- visibles=0
- for i in range(0,x):
- if not i==x and grid[i][y]>=height:
- visibles-=1
- break
- visibles+=1
- for i in range(x,len(grid)):
- if not i==x and grid[i][y]>=height:
- visibles-=1
- break
- visibles+=1
- for i in range(0,y):
- if not i==y and grid[x][i]>=height:
- visibles-=1
- break
- visibles+=1
- for i in range(y,len(grid[x])):
- if not i==y and grid[x][i]>=height:
- visibles-=1
- break
- visibles+=1
- return True if visibles else False
- margin=(2*len(data[0])+2*(len(data)-2))
- print("Part 1:", sum([sum([1 for col in range(1,len(data[row])-1) if visible(row,col,data)]) for row in range(1,len(data)-1)])+margin)
- ########################################################################################################
- #!/usr/bin/env python3
- with open("input.txt") as file:
- data=[[tree for tree in grid.strip()] for grid in file]
- def score(x,y,grid):
- height=grid[x][y]
- tree_score=[0,0,0,0]
- for i in range(x-1,-1,-1):
- if grid[i][y]<height:
- tree_score[0]+=1
- if grid[i][y]>=height:
- tree_score[0]+=1
- break
- for i in range(x+1,len(grid)):
- if grid[i][y]<height:
- tree_score[1]+=1
- if grid[i][y]>=height:
- tree_score[1]+=1
- break
- for i in range(y-1,-1,-1):
- if grid[x][i]<height:
- tree_score[2]+=1
- if grid[x][i]>=height:
- tree_score[2]+=1
- break
- for i in range(y+1,len(grid[x])):
- if grid[x][i]<height:
- tree_score[3]+=1
- if grid[x][i]>=height:
- tree_score[3]+=1
- break
- return tree_score[0]*tree_score[1]*tree_score[2]*tree_score[3]
- print("Part 2:", sorted([max([score(row,col,data) for col in range(len(data[0]))]) for row in range(len(data))])[-1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement