Files
AoC-2020/day12/day12.py
2020-12-12 18:36:46 +01:00

99 lines
2.5 KiB
Python

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()