from pathlib import Path from functools import cache FILE = "input.txt" class Foo: def __init__(self, grid: list[str]) -> None: self.grid: list[str] = grid def timelines(self) -> int: start = self.grid[0].index('S') return self.traverse(start, 1) @cache def traverse(self, position: int, level: int) -> int: grid = self.grid[level:] if not len(grid): return 1 if grid[0][position] == '^': return ( self.traverse(position-1, level + 1) + self.traverse(position+1, level + 1) ) return self.traverse(position, level + 1) def main(): raw_lines = Path(FILE).read_text().splitlines() return Foo(raw_lines).timelines() if __name__ == "__main__": print(main())