import re def part1(): file = open("input.txt") lines = [i.strip() for i in file.readlines()] direction = 0 x = 0 y = 0 for line in lines: val = re.split("([A-Z]){1}([0-9]+)", line) action = val[1] value = int(val[2]) if action == "N": y += value elif action == "S": y -= value elif action == "E": x += value elif action == "W": x -= value elif action == "L": direction = (direction - value) % 360 elif action == "R": direction = (direction + value) % 360 elif action == "F": if direction == 0: x += value elif direction == 90: y -= value elif direction == 180: x -= value elif direction == 270: y += value # print(f'{x} - {y}') print(f"Part 1: {(abs(x) + abs(y))}") def part2(): file = open("input.txt") lines = [i.strip() for i in file.readlines()] ship = {'x': 0, 'y': 0} waypoint = {'x': 10, 'y': 1} for line in lines: val = re.split("([A-Z]){1}([0-9]+)", line) action = val[1] value = int(val[2]) if action == "N": waypoint['y'] += value elif action == "S": waypoint['y'] -= value elif action == "E": waypoint['x'] += value elif action == "W": waypoint['x'] -= value elif action == "L": x = waypoint['x'] y = waypoint['y'] if value == 90: waypoint['x'] = y * -1 waypoint['y'] = x elif value == 180: waypoint['x'] = -x waypoint['y'] = -y elif value == 270: waypoint['y'] = x * -1 waypoint['x'] = y elif action == "R": x = waypoint['x'] y = waypoint['y'] if value == 90: waypoint['x'] = y waypoint['y'] = x * -1 elif value == 180: waypoint['x'] = -x waypoint['y'] = -y elif value == 270: waypoint['y'] = x waypoint['x'] = y * -1 elif action == "F": ship['x'] += waypoint['x'] * value ship['y'] += waypoint['y'] * value print(f"Part 2: {(abs(ship['x']) + abs(ship['y']))}") if __name__ == "__main__": part1() part2()