mirror of
https://github.com/sstent/Advent2021.git
synced 2026-01-29 02:21:36 +00:00
first
This commit is contained in:
96
Day5/main.py
Normal file
96
Day5/main.py
Normal file
@@ -0,0 +1,96 @@
|
||||
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() )
|
||||
Reference in New Issue
Block a user