day 5 time tag and alternative solution
This commit is contained in:
parent
203068522e
commit
c9cada67e8
|
@ -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)
|
Loading…
Reference in New Issue