| # Python 3.7 | |||||
| def main(debug): | |||||
| paths = {} | |||||
| if debug: | |||||
| #paths = {1: ["R75","D30","R83","U83","L12","D49","R71","U7","L72"], | |||||
| # 2: ["U62","R66","U55","R34","D71","R55","D58","R83"]} | |||||
| paths = {1: ["R98","U47","R26","D63","R33","U87","L62","D20","R33","U53","R51"], | |||||
| 2: ["U98","R91","D20","R16","D67","R40","U7","R15","U6","R7"]} | |||||
| else: | |||||
| with open("03in.txt","r") as file: | |||||
| for i in range(2): # there are only two lines | |||||
| paths[i+1] = file.readline().strip("\n").split(",") | |||||
| grid = {} | |||||
| for i in range(2): | |||||
| pos = (0,0) | |||||
| steps = 0 | |||||
| for path in paths[i+1]: | |||||
| d, v = path[0], int(path[1:]) | |||||
| if d == "U": | |||||
| dir = 1 | |||||
| inc = 1 | |||||
| elif d == "D": | |||||
| dir = 1 | |||||
| inc = -1 | |||||
| elif d == "R": | |||||
| dir = 0 | |||||
| inc = 1 | |||||
| else: | |||||
| dir = 0 | |||||
| inc = -1 | |||||
| for _ in range(v): | |||||
| steps += 1 | |||||
| a, b = pos | |||||
| if dir == 0: | |||||
| a += inc | |||||
| else: | |||||
| b += inc | |||||
| pos = (a,b) | |||||
| if pos not in grid: | |||||
| grid[pos] = [0,0] | |||||
| if grid[pos][i] == 0: | |||||
| grid[pos][i] = steps | |||||
| dists = [] | |||||
| for k,v in grid.items(): | |||||
| if v[0] != 0 and v[1] != 0 and k != (0,0): | |||||
| dists.append(abs(v[0]) + abs(v[1])) | |||||
| print(dists) | |||||
| print(min(dists)) | |||||
| if __name__ == "__main__": | |||||
| main(False) |