Python
#!/usr/bin/env python3
def main():
with open("03-input.txt", "r") as f:
tree_map = list(map(list, f.read().splitlines()))
result = 1
for slope in ((1, 1), (3, 1), (5, 1), (7, 1), (1, 2)):
trees = find_trees(tree_map, *slope)
print(f"Slope →{slope[0]} ↓{slope[1]}: {trees:5} trees")
result *= trees
print(f"result: {result}")
def find_trees(tree_map: list[str], step_right: int, step_down: int):
pos_x = 0
pos_y = 0
map_width = len(tree_map[0])
trees = 0
for pos_y in range(0, len(tree_map), step_down):
if tree_map[pos_y][pos_x] == "#":
trees += 1
pos_x = (pos_x + step_right) % map_width
return trees
if __name__ == "__main__":
main()