adventofcode-2016/01/part01.py

47 lines
1.2 KiB
Python
Raw Permalink Normal View History

2018-01-15 23:53:47 +01:00
#!/usr/bin/env python
import re
import argparse
DIRECTIONS = [
{'dir': 'N', 'V': 1, "H": 0 },
{'dir': 'W', 'V': 0, "H": -1 },
{'dir': 'S', 'V': -1, "H": 0 },
{'dir': 'E', 'V': 0, "H": 1 }
]
DIRECTION_CHANGE = {
'L': -1,
'R': 1
}
def load_file(filename):
with open(filename) as f:
data = f.read()
return data
def main(args):
DIRECTION_INDEX = 0
MAP_POSITION = [0, 0]
for INDICE in load_file(args.input).split(','):
INDICE = INDICE.strip()
TURN = INDICE[0]
STEP = int(INDICE[1:].strip())
DIRECTION_INDEX = DIRECTION_INDEX + DIRECTION_CHANGE[TURN]
if DIRECTION_INDEX < 0:
DIRECTION_INDEX = len(DIRECTIONS) - 1
if DIRECTION_INDEX >= len(DIRECTIONS):
DIRECTION_INDEX = 0
MAP_POSITION[0] = MAP_POSITION[0] + DIRECTIONS[DIRECTION_INDEX]['V']*STEP
MAP_POSITION[1] = MAP_POSITION[1] + DIRECTIONS[DIRECTION_INDEX]['H']*STEP
print("%d" % (abs(MAP_POSITION[0]) + abs(MAP_POSITION[1])))
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='AdventOfCode 2016 Day 01')
parser.add_argument('--input', '-i', action='store', required=True, help='input file')
args = parser.parse_args()
main(args)