initial commit
This commit is contained in:
commit
27fe77bbe1
134 changed files with 21939 additions and 0 deletions
66
2021/Day5/Day5.py
Normal file
66
2021/Day5/Day5.py
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
from Line import Line
|
||||
|
||||
|
||||
def getHighestIndixes(lines: [Line]):
|
||||
currMaxX = 0
|
||||
currMaxY = 0
|
||||
for line in lines:
|
||||
currMaxX = max(currMaxX, max(line.start.x, line.end.x) + 1)
|
||||
currMaxY = max(currMaxX, max(line.start.y, line.end.y) + 1)
|
||||
return currMaxX, currMaxY
|
||||
|
||||
|
||||
def part1(lines: [Line], arraySize: []):
|
||||
area = []
|
||||
for x in range(arraySize[0]):
|
||||
area.append([])
|
||||
area[x] = []
|
||||
for y in range(arraySize[1]):
|
||||
area[x].append(0)
|
||||
|
||||
for line in lines:
|
||||
if line.axis == "X":
|
||||
for y in range(min(line.start.y, line.end.y), max(line.start.y, line.end.y) + 1):
|
||||
area[line.start.x][y] += 1
|
||||
elif line.axis == "Y":
|
||||
for x in range(min(line.start.x, line.end.x), max(line.start.x, line.end.x) + 1):
|
||||
area[x][line.start.y] += 1
|
||||
elif line.axis == "DIAG":
|
||||
if line.start.x > line.end.x:
|
||||
y = line.end.y
|
||||
else:
|
||||
y = line.start.y
|
||||
|
||||
if y < max(line.start.y, line.end.y):
|
||||
op = 1
|
||||
else:
|
||||
op = -1
|
||||
|
||||
for x in range(min(line.start.x, line.end.x), max(line.start.x, line.end.x) + 1):
|
||||
|
||||
area[x][y] += 1
|
||||
|
||||
y += op
|
||||
|
||||
danger = 0
|
||||
|
||||
for row in area:
|
||||
for val in row:
|
||||
if val > 1:
|
||||
danger += 1
|
||||
return danger
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
lines = []
|
||||
with open("input.txt", "r") as f:
|
||||
raw = [x.strip() for x in f.readlines()]
|
||||
|
||||
for i in raw:
|
||||
inp = i.replace(" -> ", ", ")
|
||||
vals = [int(x) for x in inp.split(",")]
|
||||
lines.append(Line(vals[0], vals[1], vals[2], vals[3]))
|
||||
if lines[-1].axis == "INVALID":
|
||||
lines.pop(-1)
|
||||
|
||||
print(part1(lines, getHighestIndixes(lines)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue