From 7ce86c3d443ca7efa8e57761663bf120e6cadeee Mon Sep 17 00:00:00 2001 From: Frederik Baerentsen Date: Mon, 18 Dec 2023 19:54:29 -0500 Subject: [PATCH] Finished 2023-12-18 p2 --- 2023/day18/part2.py | 89 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 2023/day18/part2.py diff --git a/2023/day18/part2.py b/2023/day18/part2.py new file mode 100644 index 0000000..93f6412 --- /dev/null +++ b/2023/day18/part2.py @@ -0,0 +1,89 @@ +import sys +import os +from pprint import pprint +import time + + +from shapely.geometry import Point +from shapely.geometry.polygon import Polygon +import shapely + +import numpy as np + +from matplotlib.path import Path +import sympy +#colors +from termcolor import colored + +start_time = time.time() + +def p(x,inside): + for idx,i in enumerate(x): + for jdx,j in enumerate(i): + + #if j == '#': + # print(colored(j,'red'),end='') + #if (idx,jdx) in steps: + # print(colored(j,'blue'),end='') + if (idx,jdx) in inside: + print(colored(j,'green'),end='') + else: + print(j,end='') + print() + +input_f = '' +if len(sys.argv) == 1: + input_f = 'test' +else: + input_f = sys.argv[1] + +grid = [] + +with open(input_f) as file: + for line in file: + grid.append(line.rstrip().split()) + +steps = [] + +#size = 20 + +cur = (0,0) + +steps.append(cur) + +for i in grid: + color = i[2][2:-1] + + match int(color[-1:]): + case 0: + direction = 'R' + case 1: + direction = 'D' + case 2: + direction = 'L' + case 3: + direction = 'U' + + length = int(color[:-1], 16) + + if direction == 'R': + cur = (cur[0],cur[1]+length) + + if direction == 'D': + cur = (cur[0]+length,cur[1]) + + if direction == 'L': + cur = (cur[0],cur[1]-length) + + if direction == 'U': + cur = (cur[0]-length,cur[1]) + + steps.append(cur) + +polygon = Polygon(steps) + +area = polygon.buffer(0.5,join_style="mitre").area + +print(int(area)) + +print("--- %s seconds ---" % (time.time() - start_time))