lines = [] with open('data', 'r') as fp: for line in fp: temp = line.split(' ') point_a = temp[0].split(',') point_b = temp[2].split(',') lines.append([[int(point_a[0]), int(point_a[1])], [int(point_b[0]), int(point_b[1])]]) map = {} for line in lines: # # DEBUG(dev): # print line if(line[0][0] == line[1][0]): # vertical range_limits = [line[0][1], line[1][1]] range_limits.sort() range_limits[1] += 1 # inclusive for y in range(range_limits[0], range_limits[1]): if(tuple([line[0][0], y]) in map.keys()): map[tuple([line[0][0], y])] = map[tuple([line[0][0], y])] + 1 else: map[tuple([line[0][0], y])] = 1 elif(line[0][1] == line[1][1]): # horizontal range_limits = [line[0][0], line[1][0]] range_limits.sort() range_limits[1] += 1 # inclusive for x in range(range_limits[0], range_limits[1]): if(tuple([x, line[0][1]]) in map.keys()): map[tuple([x, line[0][1]])] = map[tuple([x, line[0][1]])] + 1 else: map[tuple([x, line[0][1]])] = 1 # else: # print('skip') # # DEBUG(dev): # min_x = 1000 # max_x = 0 # min_y = 1000 # max_y = 0 # for key in map: # if(key[0] < min_x): # min_x = key[0] # elif(key[0] > max_x): # max_x = key[0] # if(key[1] < min_y): # min_y = key[1] # elif(key[1] > max_y): # max_y = key[1] # print(min_x, max_x) # print(min_y, max_y) total = 0 extra = 0 for key,value in map.items(): # # DEBUG(dev): # print(key,value) if(value > 1): total = total + 1 else: extra = extra + 1 print(total, total + extra) # # DEBUG(dev): # test = [] # row = [] # for x in range(0, 150): # row.append('.') # for y in range(0, 150): # test.append(row) # for key,value in map.items(): # if(key[0] < 150 and key[1] < 150): # test[key[1]][key[0]] = value # print(test)