-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path5a.py
48 lines (43 loc) · 1.09 KB
/
5a.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#Advent of code 2021
# 12/10/21 day 5a
# Joe McFarland
# import sys
# import re
# import copy
#max_x = 10
#max_y = 10
max_x = 1000
max_y = 1000
grid = [[0]*max_x for _ in range(max_y)]
filename = "data5.txt"
file = open(filename)
filestr = file.read()
a_list = filestr.split("\n")
maxrows = len(a_list)
print(a_list)
#maxcols = len(a_list[0])
# [3, 4] : [1, 4] # xy1[0] xy1[1] : xy2[0] xy2[1] : [x1, y1] [x2, y2]
def incrRange(xy1, xy2):
x1,y1,x2,y2 = xy1[0],xy1[1],xy2[0],xy2[1]
if x1==x2:
for y in range(min(y1,y2), max(y1,y2)+1):
grid[x1][y] += 1
elif y1==y2:
for x in range(min(x1,x2), max(x1,x2)+1):
grid[x][y1] += 1
else:
print(f"SKIP diag, {line}")
for line in a_list:
xy = line.split(" -> ")
xy1str = xy[0].split(",")
xy1 = [int(elem) for elem in xy1str]
xy2str = xy[1].split(",")
xy2 = [int(elem) for elem in xy2str]
print(f"{xy1} : {xy2}")
incrRange(xy1, xy2)
count = 0
for x in range(0, max_x):
for y in range(0, max_y):
if grid[x][y] >= 2:
count += 1
print(f"count = {count}")