day 5 time tag and alternative solution

This commit is contained in:
dave 2021-12-04 21:38:39 -08:00
parent 203068522e
commit c9cada67e8
2 changed files with 45 additions and 0 deletions

43
5/a_better.py Normal file
View File

@ -0,0 +1,43 @@
from collections import defaultdict
def myrange(x1, y1, x2, y2):
while True:
yield(x1, y1)
if x1 == x2 and y1 == y2:
return
if x1 != x2:
x1 += (1 if x1 <= x2 else -1)
if y1 != y2:
y1 += (1 if y1 <= y2 else -1)
with open("input.txt") as f:
lines = [i.strip() for i in f.readlines()]
points = defaultdict(lambda: 0)
for line in lines:
p1, p2 = line.split(" -> ")
x1, y1 = p1.split(",")
x2, y2 = p2.split(",")
x1 = int(x1)
y1 = int(y1)
x2 = int(x2)
y2 = int(y2)
# removing this if condition will include diagonal lines, the requirement for part b
if x1 == x2 or y1 == y2:
for xr, yr in myrange(x1, y1, x2, y2):
points[(xr, yr)] += 1
overlaps = 0
for point, hits in points.items():
if hits > 1:
overlaps += 1
print(overlaps)

2
5/b.py
View File

@ -49,3 +49,5 @@ for point, hits in points.items():
overlaps += 1
print(overlaps)
# 26m