Files
Advent2021/Day5/main.py
2021-12-06 07:37:45 -05:00

96 lines
2.1 KiB
Python

from aocd import get_data
from aocd import submit
input_data = get_data(day=5, year=2021)
test_data = """0,9 -> 5,9
8,0 -> 0,8
9,4 -> 3,4
2,2 -> 2,1
7,0 -> 7,4
6,4 -> 2,0
0,9 -> 2,9
3,4 -> 1,4
0,0 -> 8,8
5,5 -> 8,2"""
lines = input_data.split("\n")
# lines = test_data.split("\n")
import re
import numpy as np
lineSegments = []
def readDataLine(line):
m = re.search('([0-9]*),([0-9]*)\s->\s([0-9]*),([0-9]*)', line)
if m:
segment = [int(m.group(1)),int(m.group(2)),int(m.group(3)),int(m.group(4))]
return segment
else:
return []
for line in lines:
lineSegment = readDataLine(line)
if lineSegment != []:
lineSegments.append(lineSegment)
print(lineSegments)
largestVal = np.amax(lineSegments,axis=0)
print(largestVal)
### create 2d array
MainArray = np.zeros((largestVal[0] + 10,largestVal[3] + 10 ), dtype = int)
print(MainArray)
for line in lineSegments:
print("LINE---------")
print(line)
X_start = line[0]
Y_start = line[1]
X_end = line[2]
Y_end = line[3]
Y_max = max(Y_start, Y_end)
Y_min = min(Y_start, Y_end)
X_max = max(X_start, X_end)
X_min = min(X_start, X_end)
###ROWS
if X_start == X_end:
for j in range(Y_min,Y_max + 1):
MainArray[j,X_start] += 1
###COLUMNS
elif Y_start == Y_end:
for i in range(X_min,X_max + 1):
# print("X:" + str(i))
MainArray[Y_start,i] += 1
###DIAGS
else:
if Y_start < Y_end:
j_array = list(range(Y_start,Y_end + 1,1))
else:
j_array = list(range(Y_start,Y_end - 1, -1))
if X_start < X_end:
print("B")
i_array = list(range(X_start,X_end + 1,1))
else:
print(X_end, X_start)
print("C")
i_array = list(range(X_start,X_end - 1, -1))
print("XXXXXXXXXXXXXXXXX===================================")
print(j_array)
print(i_array)
for index, j in enumerate(j_array):
# print(j,i_array[index])
MainArray[j,i_array[index]] += 1
print(MainArray)
print( (MainArray>1).sum() )
submit( (MainArray>1).sum() )