Compare commits

..

2 Commits

Author SHA1 Message Date
7ce86c3d44 Finished 2023-12-18 p2 2023-12-18 19:54:29 -05:00
dfa3493046 Working on 2023-12-18 2023-12-18 19:46:11 -05:00
3 changed files with 193 additions and 15 deletions

77
2023/day18/part1.1.py Normal file
View File

@ -0,0 +1,77 @@
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
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)
#cur = (int(size/2),int(size/2))
steps.append(cur)
for i in grid:
direction,length,color = i
length = int(length)
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))

View File

@ -6,9 +6,12 @@ import time
from shapely.geometry import Point from shapely.geometry import Point
from shapely.geometry.polygon import Polygon from shapely.geometry.polygon import Polygon
import shapely
import numpy as np
from matplotlib.path import Path from matplotlib.path import Path
import sympy
#colors #colors
from termcolor import colored from termcolor import colored
@ -18,8 +21,8 @@ def p(x,inside):
#if j == '#': #if j == '#':
# print(colored(j,'red'),end='') # print(colored(j,'red'),end='')
#elif (idx,jdx) in steps: #if (idx,jdx) in steps:
# print(colored(j,'green'),end='') # print(colored(j,'blue'),end='')
if (idx,jdx) in inside: if (idx,jdx) in inside:
print(colored(j,'green'),end='') print(colored(j,'green'),end='')
else: else:
@ -41,7 +44,7 @@ with open(input_f) as file:
pprint(grid) pprint(grid)
size = 1000 size = 20
pit = [ ['.']*size for i in range(size)] pit = [ ['.']*size for i in range(size)]
cur = (int(size/2),int(size/2)) cur = (int(size/2),int(size/2))
@ -112,23 +115,32 @@ for ydx,y in enumerate(pit):
#p(pit,s_ground) #p(pit,s_ground)
pprint(len(s_ground)) # pprint(len(s_ground))
pprint(len(m_ground)) # pprint(len(m_ground))
print(len(m_ground)+len(set(steps))) # print(len(m_ground)+len(set(steps)))
print('Part 1: ' + str(len(set(steps)))) # print('Part 1: ' + str(len(set(steps))))
print('Part 1.2: ' + str(len(s_ground)+len(set(steps)))) # print('Part 1.2: ' + str(len(s_ground)+len(set(steps))))
print(len(ground) + len(set(steps))) # print(len(ground) + len(set(steps)))
# p(pit,s_ground)
# print(len(s_ground))
# p(pit,m_ground)
# print(len(m_ground))
#print('Part 1: ',end='')
#print(area(polygon))
#print(len(m_ground))
print('Part 1.2: ' + str(shapely.area(polygon)))
# 57559
# 12835 # 58612
# 13134 # 62918
# 17440
# Part 1: 4306 # Part 1: 4306
# Part 1.2: 17141 # Part 1.2: 61865 //corrent
# 4306 # 4306

89
2023/day18/part2.py Normal file
View 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))