H = (0,0) T = (0,0) def go(p, dir): x,y = p if dir == "U": y += 1 if dir == "D": y -= 1 if dir == "L": x -= 1 if dir == "R": x += 1 return x,y def follow(): if H == T: return T if abs(H[0] - T[0]) <= 1 and abs(H[1] - T[1]) <= 1: return T if H[1] == T[1]: x,y = T x = H[0] - sgn(H[0] - T[0]) return x,y if H[0] == T[0]: x,y = T y = H[1] - sgn(H[1]-T[1]) return x,y # diagonal x,y = T x += sgn(H[0] - T[0]) y += sgn(H[1] - T[1]) return x,y def sgn(x): if x==0: return 0 if x > 0: return 1 return -1 visited = set([T]) for line in open("input"): dir, count = line.split() count = int(count) for _ in range(count): H = go(H, dir) T = follow() visited.add(T) print(H,T) print(len(visited))