1
+ input = []
2
+ maxX = 0
3
+ maxY = 0
4
+
5
+ with open ('day5input' ) as f :
6
+ for line in f :
7
+ p = line .strip ().split (' -> ' )
8
+ x1 = int (p [0 ].split (',' )[0 ])
9
+ y1 = int (p [0 ].split (',' )[1 ])
10
+ x2 = int (p [1 ].split (',' )[0 ])
11
+ y2 = int (p [1 ].split (',' )[1 ])
12
+
13
+ input .append ( ((x1 , y1 ), (x2 , y2 )) )
14
+ maxX = max (maxX , x1 , x2 )
15
+ maxY = max (maxY , y1 , y2 )
16
+
17
+ grid = []
18
+ for x in range (maxY + 1 ):
19
+ grid .append ( [0 ]* (maxX + 1 ))
20
+
21
+
22
+ for op in input :
23
+ x1 = op [0 ][0 ]
24
+ y1 = op [0 ][1 ]
25
+ x2 = op [1 ][0 ]
26
+ y2 = op [1 ][1 ]
27
+ if x1 == x2 :
28
+ for i in range (min (y1 , y2 ), max (y1 , y2 )+ 1 ):
29
+ grid [i ][x1 ]+= 1
30
+ elif y1 == y2 :
31
+ for i in range ( min (x1 , x2 ), max (x1 , x2 )+ 1 ):
32
+ grid [y1 ][i ]+= 1
33
+ elif x1 < x2 and y1 < y2 or x2 < x1 and y2 < y1 :
34
+ for i in range (0 , max (x1 , x2 ) - min (x1 , x2 )+ 1 ):
35
+ grid [min (y2 , y1 )+ i ][min (x2 , x1 )+ i ]+= 1
36
+ else :
37
+ for i in range (0 , max (x1 , x2 ) - min (x1 , x2 )+ 1 ):
38
+ grid [max (y1 , y2 )- i ][min (x1 , x2 )+ i ]+= 1
39
+
40
+
41
+ count = 0
42
+ for row in grid :
43
+ for elem in row :
44
+ if elem >= 2 :
45
+ count += 1
46
+ print (count )
0 commit comments