03_wires.py 709 B

123456789101112131415161718192021222324
  1. #!/usr/bin/env python3
  2. import sys
  3. def read_wire(f):
  4. return [(x[0], int(x[1:])) for x in f.readline().split(',')]
  5. def trace(wire):
  6. multipliers = {'U': (0, -1), 'D': (0, 1), 'L': (-1, 0), 'R': (1, 0)}
  7. x = y = steps = 0
  8. visited = {}
  9. for direction, distance in wire:
  10. dx, dy = multipliers[direction]
  11. for i in range(distance):
  12. x += dx
  13. y += dy
  14. steps += 1
  15. visited.setdefault((x, y), steps)
  16. return visited
  17. path1 = trace(read_wire(sys.stdin))
  18. path2 = trace(read_wire(sys.stdin))
  19. intersections = set(path1) & set(path2)
  20. print(min(abs(x) + abs(y) for x, y in intersections))
  21. print(min(path1[i] + path2[i] for i in intersections))