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