07_beam.py 560 B

12345678910111213141516171819202122232425
  1. #!/usr/bin/env python3
  2. import sys
  3. def visit(xy):
  4. x, y = xy
  5. if xy in paths:
  6. return 0
  7. if y == len(grid):
  8. paths[xy] = 1
  9. return 0
  10. if grid[y][x] == '^':
  11. left = x - 1, y + 1
  12. right = x + 1, y + 1
  13. splits = 1 + visit(left) + visit(right)
  14. paths[xy] = paths[left] + paths[right]
  15. return splits
  16. splits = visit((x, y + 1))
  17. paths[xy] = paths[(x, y + 1)]
  18. return splits
  19. grid = sys.stdin.read().split()
  20. start = grid[0].index('S'), 0
  21. paths = {}
  22. print(visit(start))
  23. print(paths[start])