2021/day05.py
2021-12-09 12:07:49 +01:00

50 lines
1.2 KiB
Python
Executable file

#!/usr/bin/env python3
import fileinput
N = 1000
def main():
diag = [[0] * N for _ in range(N)]
vents = [
[
tuple(int(coord) for coord in coords.split(","))
for coords in str(line).split(" -> ")
]
for line in fileinput.input()
]
for (x1, y1), (x2, y2) in vents:
xsign = -1 if x2 < x1 else 1
ysign = -1 if y2 < y1 else 1
if x1 == x2:
# vertical line
for y in range(y1, y2 + ysign, ysign):
diag[y][x1] += 1
elif y1 == y2:
# horizontal line
for x in range(x1, x2 + xsign, xsign):
diag[y1][x] += 1
part1 = sum(point >= 2 for row in diag for point in row)
print("part 1:", part1)
for (x1, y1), (x2, y2) in vents:
xsign = -1 if x2 < x1 else 1
ysign = -1 if y2 < y1 else 1
if x1 != x2 and y1 != y2:
# diagonal line
y = y1
for x in range(x1, x2 + xsign, xsign):
diag[y][x] += 1
y += ysign
part2 = sum(point >= 2 for row in diag for point in row)
print("part 2:", part2)
if __name__ == "__main__":
main()