mirror of
https://github.com/sstent/Advent2021.git
synced 2026-01-27 17:42:17 +00:00
96 lines
2.1 KiB
Python
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() ) |