#!/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)