Finished 2023-12-18 p2
This commit is contained in:
parent
dfa3493046
commit
7ce86c3d44
89
2023/day18/part2.py
Normal file
89
2023/day18/part2.py
Normal file
@ -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))
|
Loading…
Reference in New Issue
Block a user