advent/2016/01-2.py

47 lines
853 B
Python
Raw Permalink Normal View History

2017-01-14 00:34:25 +00:00
# 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])