advent-of-code/2020/day3/day3.py

37 lines
1017 B
Python
Raw Permalink Normal View History

2024-12-03 14:27:19 +00:00
def check_slope_for_trees(plan, x_right=3, y_down=1):
x_max = len(plan[0])
y_max = len(plan)
x, y = 0, 0
tree_count = 0
while y < y_max - 1:
x += x_right
x %= x_max # wrap x
y += y_down
pos = plan[y][x]
if pos == '#':
tree_count += 1
return tree_count
def part1(inp):
plan = [line.rstrip() for line in open(inp)]
tree_count = check_slope_for_trees(plan)
print(f"number of trees : {tree_count}")
def part2(inp):
plan = [line.rstrip() for line in open(inp)]
slopes = [{"x": 1, "y": 1}, {"x": 3, "y": 1}, {"x": 5, "y": 1}, {"x": 7, "y": 1}, {"x": 1, "y": 2}]
tree_product = 1
for slope in slopes:
tree_count = check_slope_for_trees(plan, slope["x"], slope["y"])
tree_product *= tree_count
print(f"slope {slope} number of trees : {tree_count}")
print(f"Cumulative product of tress : {tree_product}")
if __name__ == "__main__":
part1('input.txt')
part2('input.txt')