From bce04ce733e9a540af202b54e040e19635be5d00 Mon Sep 17 00:00:00 2001 From: Nathan van Ofwegen Date: Sat, 12 Dec 2020 18:36:46 +0100 Subject: [PATCH] day12 --- day12/day12.py | 98 ++++++ day12/input.txt | 769 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 867 insertions(+) create mode 100644 day12/day12.py create mode 100644 day12/input.txt diff --git a/day12/day12.py b/day12/day12.py new file mode 100644 index 0000000..55da5c7 --- /dev/null +++ b/day12/day12.py @@ -0,0 +1,98 @@ +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() diff --git a/day12/input.txt b/day12/input.txt new file mode 100644 index 0000000..0f79177 --- /dev/null +++ b/day12/input.txt @@ -0,0 +1,769 @@ +R90 +S1 +R90 +W2 +S3 +L270 +L90 +S2 +F2 +L90 +W2 +S5 +E2 +S5 +F42 +W5 +L90 +F15 +R90 +S2 +F76 +E1 +F26 +R90 +W1 +L90 +W1 +F20 +L180 +F38 +S2 +W5 +F13 +N3 +E2 +N4 +L90 +N1 +E4 +L90 +E2 +F21 +R90 +N5 +F78 +E3 +L90 +W4 +S2 +R180 +F53 +E5 +F42 +N1 +R90 +F70 +E1 +N5 +W4 +S5 +R90 +W3 +L90 +F74 +E5 +L180 +L90 +S5 +F51 +W4 +F33 +N5 +F55 +L90 +W3 +R180 +E3 +N4 +E3 +R180 +E2 +N2 +W4 +L90 +F13 +W3 +S2 +W4 +F89 +L90 +F92 +R90 +N5 +R90 +W3 +N1 +R90 +N3 +F38 +W3 +L90 +W3 +S2 +R90 +E1 +F24 +L90 +F70 +E4 +S1 +R90 +E4 +S2 +F3 +W4 +N3 +E1 +L180 +F10 +E5 +F5 +N4 +F83 +F98 +E1 +N4 +E2 +E1 +L180 +W2 +F29 +N4 +L90 +E2 +F66 +N2 +W5 +L180 +E4 +F24 +L180 +N3 +S1 +E4 +L180 +N3 +R90 +F84 +F25 +N4 +E5 +N4 +E4 +F37 +L180 +F50 +L90 +E4 +L90 +S2 +R90 +N1 +L90 +E1 +N3 +F59 +R90 +N2 +E3 +S2 +R90 +F25 +L90 +W5 +F6 +E2 +F5 +N3 +L90 +W2 +F18 +R90 +N5 +F10 +N5 +R90 +E4 +L90 +N3 +F61 +W2 +F77 +R180 +F76 +W5 +N5 +S5 +L180 +F90 +R90 +E1 +S1 +E2 +L90 +F12 +S5 +F10 +R90 +S1 +E1 +L90 +F51 +S4 +W4 +F6 +R90 +W2 +F62 +R180 +S5 +E1 +R90 +N5 +F37 +E5 +F41 +R90 +E3 +S5 +E5 +N2 +N5 +R90 +W2 +S3 +W3 +R90 +F9 +R90 +E4 +L90 +N3 +F9 +R180 +S3 +R90 +W3 +F100 +F58 +L180 +N2 +L90 +S1 +W1 +N1 +W2 +S5 +E2 +W3 +F44 +R90 +F11 +R90 +E4 +S5 +R270 +F20 +S4 +F90 +L90 +E1 +S4 +E2 +L90 +S3 +F69 +L90 +F79 +E3 +R180 +F22 +E2 +F71 +S3 +L90 +F58 +E2 +S4 +L90 +S1 +E4 +L180 +F86 +N5 +R90 +F57 +L180 +W1 +L90 +F64 +S1 +W2 +R180 +E3 +F26 +W5 +R90 +S5 +E3 +F66 +L180 +F57 +S4 +F21 +L180 +F99 +W5 +F20 +L180 +S3 +R90 +N5 +R180 +N4 +F53 +L90 +W4 +R90 +N1 +W2 +S4 +F50 +E1 +S3 +L180 +F38 +E2 +F97 +E2 +F50 +L90 +F21 +L90 +F10 +L90 +N3 +F55 +E1 +F99 +R90 +E4 +N2 +W2 +L90 +N2 +W4 +S5 +R270 +E5 +L90 +F27 +E3 +R90 +F93 +E3 +R90 +E5 +L270 +E1 +S1 +E4 +F88 +R270 +N5 +F2 +N1 +R270 +E5 +L90 +F82 +L180 +F52 +R90 +W5 +F61 +W3 +F1 +W5 +R180 +F78 +S3 +L270 +W4 +N1 +F83 +W1 +L270 +N4 +F23 +N1 +E1 +S5 +L90 +S5 +E1 +R180 +E4 +F98 +N5 +R90 +F18 +R90 +F10 +L90 +F100 +L90 +W3 +S2 +E2 +N1 +W4 +F3 +W1 +L90 +F42 +S4 +E5 +L90 +F13 +S5 +F82 +S2 +W3 +N5 +F50 +W4 +F50 +L90 +F2 +F26 +W2 +N3 +F2 +S3 +F94 +S2 +E3 +S5 +E4 +S1 +F17 +N4 +W1 +L90 +W5 +N4 +E5 +F31 +R270 +E3 +F21 +E5 +F62 +W1 +N5 +F43 +R90 +S4 +F81 +W3 +S4 +L90 +E2 +L90 +S1 +F67 +W3 +R180 +W2 +F76 +F96 +R90 +F72 +E2 +R90 +N5 +E3 +E1 +F87 +E3 +L90 +S2 +L90 +S3 +W1 +R90 +S2 +E1 +L180 +F82 +E5 +F91 +N4 +R90 +W3 +S5 +E2 +F74 +S5 +F32 +S5 +L180 +N3 +R90 +N1 +F11 +E3 +F9 +N3 +F83 +E3 +F51 +R90 +S1 +F19 +L180 +F61 +R180 +E4 +F34 +S5 +R180 +S1 +W4 +N4 +R90 +W1 +F23 +W2 +F93 +E1 +S4 +F6 +E1 +E5 +F82 +E1 +S1 +E3 +R180 +E5 +F71 +N1 +L90 +N3 +W1 +F94 +R270 +F33 +N2 +R90 +E1 +F52 +N4 +W1 +L90 +S1 +F71 +N4 +R180 +S1 +E1 +S4 +F29 +W4 +L90 +F43 +L90 +F13 +W2 +S3 +W4 +N5 +W3 +F41 +E2 +F69 +L90 +F4 +W1 +F77 +N5 +F17 +E1 +F99 +S2 +E5 +L90 +F92 +R90 +E3 +R90 +N1 +F19 +S1 +R90 +W5 +N5 +L90 +S1 +E2 +N2 +E3 +S1 +F76 +E2 +S4 +L90 +F32 +N1 +W1 +F12 +E2 +W2 +F19 +S1 +F94 +N3 +F72 +L180 +F4 +N4 +W5 +F82 +W3 +F30 +S5 +F21 +S1 +W3 +R90 +W5 +L270 +N1 +W3 +S1 +W5 +F45 +R90 +N1 +R90 +F21 +N2 +F42 +L90 +F72 +N5 +F85 +W2 +F68 +F20 +W3 +S1 +W4 +S3 +F59 +N1 +L90 +E5 +N1 +R90 +S5 +F56 +W2 +S1 +F3 +N4 +W3 +F89 +E5 +N3 +E3 +N5 +W4 +F5 +R90 +W3 +E3 +R270 +E2 +N4 +F68 +R90 +N1 +L90 +S3 +F59 +S2 +F98 +R90 +S2 +L90 +F59 +F97 +E5 +F20 +S5 +F67 +W3 +F100 +W2 +R90 +N2 +E4 +L180 +S5 +R90 +E2 +S1 +L90 +S1 +F38 +N3 +W4 +F47 +E3 +S5 +F65 +N3 +F10 +W4 +N5 +L90 +N3 +L90 +F64 +S2 +L90 +E5 +S2 +E3 +N5 +F82 +R180 +F97 +S2 +E5 +R90 +W2 +R90 +F67 +L180 +E3 +N2 +S4 +N5 +R90 +E1 +F81 +R180 +N3 +R90 +E2 +N3 +W3 +W1 +S3 +L90 +F72