Files

32 lines
1.1 KiB
Python

import numpy as np
def test(input, solution):
# print(f"Running input {input}")
result = process(input)
print(f"Solution was {result}")
assert result == solution
def run():
file = open("input.txt", "r")
return process(file.read()[:-1])
def process_line(line):
(direction, amount, _) = line.split()
return direction, int(amount)
direction_map = {"L": (0,-1), "R": (0,1), "D": (-1,0), "U": (1,0)}
def process(input):
points = []
perimeter_area = 0
current_point = (0,0)
for line in input.split("\n"):
(dir_letter, amount) = process_line(line)
direction = (direction_map[dir_letter][0] * amount, direction_map[dir_letter][1] * amount)
perimeter_area += amount
current_point = (current_point[0] + direction[0], current_point[1] + direction[1])
points.append(current_point)
indices = list(range(len(points) - 1)) + [-1]
determinants = [np.linalg.det(np.array([[points[i][1], points[i+1][1]],[points[i][0], points[i+1][0]]])) for i in indices]
return round(abs(sum(determinants))/2) + perimeter_area/2 + 1