Completed day 5, task 2

This commit is contained in:
2021-12-05 10:06:14 +00:00
parent e06e305614
commit c5b8c0025d

68
Day-5/day5-1.py Normal file
View File

@@ -0,0 +1,68 @@
#!/usr/bin/python3
diagram = []
totalPoints = 0
# Read all the line segments into an array.
segments = []
with open('/home/jake/Documents/AoC-2021/Day-5/input.txt') as inputFile:
for line in inputFile:
segment = line.strip('\n').split(' -> ')
segments.append(segment)
# Work out the bounds of our diagram and create an array for it.
largestX = 0
largestY = 0
for segment in segments:
if(int(segment[0].split(',')[0]) > largestX):
largestX = int(segment[0].split(',')[0])
if(int(segment[1].split(',')[0]) > largestX):
largestX = int(segment[1].split(',')[0])
if(int(segment[0].split(',')[1]) > largestY):
largestY = int(segment[0].split(',')[1])
if(int(segment[1].split(',')[1]) > largestX):
largestY = int(segment[1].split(',')[1])
for i in range(0, largestY+1):
diagLine = []
for i in range(0,largestX+1):
diagLine.append(0)
diagram.append(diagLine)
# Run through the line segments and plot them on the diagram if they are horizontal or vertical.
for segment in segments:
startingX = int(segment[0].split(',')[0])
startingY = int(segment[0].split(',')[1])
endingX = int(segment[1].split(',')[0])
endingY = int(segment[1].split(',')[1])
if((startingX == endingX) or (startingY == endingY)):
endX = endingX +1
startX = startingX
endY = endingY +1
startY = startingY
# Flip the start and end if the end is lower so our for loop will still run.
if(startingX > endingX):
endX = startingX +1
startX = endingX
if(startingY > endingY):
endY = startingY +1
startY = endingY
for x in range(startX, endX):
for y in range(startY, endY):
diagram[y][x]+=1
# Find points where two or more line segments overlap.
for line in diagram:
for num in line:
if(num > 1):
totalPoints+=1
# Print the results
print("There are " + str(totalPoints) + " points where two or more lines overlap.")