# count trees when going 1 down and 2 right def tree_count(ls): x = 0 trees = 0 for y, line in enumerate(ls): if line[x] == '#': trees += 1 x = (x + 3) % (len(line) - 1) return trees # count trees when going dx right and dy down def tree_count2(ls, dx, dy): x = 0 y = 0 trees = 0 while True: try: if ls[y][x] == '#': trees += 1 x = (x + dx) % (len(ls[y]) - 1) y = y + dy except IndexError: break return trees with open(r"C:\Users\Maya\Desktop\Uni\WS_2021\AoC\input03") as f: lines = f.readlines() # Count trees on way down print(tree_count(lines)) # Multiply trees on different slopes print(tree_count2(lines, 1, 1) * tree_count2(lines, 3, 1) * tree_count2(lines, 5, 1) * tree_count2(lines, 7, 1) * tree_count2(lines, 1, 2))