# Python! import collections def step(cardinal, distance): global coordinates global pathcrossed global visited if cardinal in ['N', 'S']: cindex = 1 else: cindex = 0 for s in range(distance): if cardinal in ['N', 'E']: coordinates[cindex] += 1 else: coordinates[cindex] -= 1 t = (coordinates[0], coordinates[1]) if t in visited: pathcrossed = True break visited.append(t) with open('01.txt') as file: turns = file.read().replace(' ', '').split(',') moves = collections.defaultdict(int) direction = collections.deque(['N', 'E', 'S', 'W']) pathcrossed = False coordinates = [0, 0] visited = [(0, 0)] for turn in turns: direction.rotate(1 if turn[0] == 'L' else -1) d = direction[0] dist = int(turn[1:]) step(d, dist) if pathcrossed: break print('Distance in blocks:', coordinates[0] + coordinates[1])