56 lines
1 KiB
Python
56 lines
1 KiB
Python
from lib import *
|
|
|
|
input = read_input(2020, 12)
|
|
|
|
lines = input.splitlines()
|
|
|
|
|
|
x = y = 0
|
|
dx, dy = 1, 0
|
|
for line in lines:
|
|
n = int(line[1:])
|
|
cmd = line[0]
|
|
if cmd == "N":
|
|
y -= n
|
|
if cmd == "E":
|
|
x += n
|
|
if cmd == "S":
|
|
y += n
|
|
if cmd == "W":
|
|
x -= n
|
|
if cmd == "F":
|
|
x += dx * n
|
|
y += dy * n
|
|
if cmd == "L":
|
|
for _ in range(n // 90 % 4):
|
|
dx, dy = dy, -dx
|
|
if cmd == "R":
|
|
for _ in range(n // 90 % 4):
|
|
dx, dy = -dy, dx
|
|
|
|
print(abs(x) + abs(y))
|
|
|
|
|
|
wx, wy = 10, -1
|
|
sx = sy = 0
|
|
for line in lines:
|
|
n = int(line[1:])
|
|
cmd = line[0]
|
|
if cmd == "N":
|
|
wy -= n
|
|
if cmd == "E":
|
|
wx += n
|
|
if cmd == "S":
|
|
wy += n
|
|
if cmd == "W":
|
|
wx -= n
|
|
if cmd == "F":
|
|
sx += wx * n
|
|
sy += wy * n
|
|
if cmd == "L":
|
|
for _ in range(n // 90 % 4):
|
|
wx, wy = wy, -wx
|
|
if cmd == "R":
|
|
for _ in range(n // 90 % 4):
|
|
wx, wy = -wy, wx
|
|
print(abs(sx) + abs(sy))
|