def test_find_2x3_and_3x2_in_6x3(self): mat = matrix.Matrix([[1,1,1], [1,1,1], [1,1,0], [1,1,0], [1,1,0], [2,2,2]]) rectangles = mat.find_rectangles([(2,3), (3,2)]) self.assertEqual(rectangles, {(2,3): 1, (3,2): 1})
def test_2x2(self): mat = matrix.Matrix([[1,1], [1,1]]) self.assertEqual(mat.test_rectangle_at((0,0), ((0,0))), True) self.assertEqual(mat.test_rectangle_at((0,0), ((1,1))), True) self.assertEqual(mat.test_rectangle_at((0,0), ((1,2))), True) self.assertEqual(mat.test_rectangle_at((0,0), ((2,1))), True) self.assertEqual(mat.test_rectangle_at((0,0), ((2,2))), True) self.assertEqual(mat.test_rectangle_at((0,0), ((1,3))), False) self.assertEqual(mat.test_rectangle_at((0,0), ((1,3))), False)
def test_6x3(self): mat = matrix.Matrix([[1,1,1], [1,1,1], [1,1,0], [1,1,0], [1,1,0], [2,2,2]]) rectangles = mat.count_rectangles() self.assertEqual(rectangles, [0,2,0,0])
def test_2x2_at_1x1(self): mat = matrix.Matrix([[1,1,1], [1,1,1], [1,1,1]]) mat.invalidate((1,1), (2,2)) self.assertEqual(mat.mat, [[1,1,1], [1,-1,-1], [1,-1,-1]])
def test_2x2_at_0x0(self): mat = matrix.Matrix([[1,1,1], [1,1,1], [1,1,1]]) mat.invalidate((0,0), (2,2)) self.assertEqual(mat.mat, [[-1,-1,1], [-1,-1,1], [1,1,1]])
def main(argv): if len(argv) != 2: print("Usage: {} <file>".format(argv[0])) exit(1) try: input_file = argv[1] file_content = np.genfromtxt(input_file, delimiter=',', dtype=int) mat = matrix.Matrix(file_content) found_rectangles = mat.count_rectangles() print(''.join(map(lambda x: str(x), found_rectangles))) except Exception as ex: print(ex) exit(1)
def test_find_2x2_in_2x2(self): mat = matrix.Matrix([[1,1], [1,1]]) self.assertEqual(mat.find_rectangles([(2,2)]), {(2,2): 1})
def test_find_1x1_in_2x2(self): mat = matrix.Matrix([[1,1], [1,1]]) self.assertEqual(mat.find_rectangles([(1,1)]), {(1,1): 4})
def test_find_1x4_in_1x4(self): mat = matrix.Matrix([[1,1,1,1]]) self.assertEqual(mat.find_rectangles([(1,4)]), {(1,4): 1})
def test_empty(self): mat = matrix.Matrix([]) self.assertEqual(mat.cols, 0) self.assertEqual(mat.rows, 0)
def test_empty(self): mat = matrix.Matrix([]) rectangles = mat.count_rectangles() self.assertEqual(rectangles, [0,0,0,0])
def test_no_overlap_2x2(self): mat = matrix.Matrix([[0,1,1], [1,1,1], [1,1,3]]) rectangles = mat.count_rectangles() self.assertEqual(rectangles, [1,0,0,0])
def test_2x2(self): mat = matrix.Matrix([[1,1], [1,1]]) self.assertEqual(mat.cols, 2) self.assertEqual(mat.rows, 2)
def test_find_1x1_in_3x3(self): mat = matrix.Matrix([[0,1,1], [1,1,1], [1,1,3]]) rectangles = mat.find_rectangles([(2,2)]) self.assertEqual(rectangles, {(2,2): 1})
def test_1x1(self): mat = matrix.Matrix([[1]]) self.assertEqual(mat.cols, 1) self.assertEqual(mat.rows, 1)
def test_find_2x3_in_2x3_horizontal(self): mat = matrix.Matrix([[1,1,1], [1,1,1]]) rectangles = mat.find_rectangles([(2,3)]) self.assertEqual(rectangles, {(2,3): 1})
def test_find_3x2_in_3x2(self): mat = matrix.Matrix([[1,1], [1,1], [1,1]]) rectangles = mat.find_rectangles([(3,2)]) self.assertEqual(rectangles, {(3,2): 1})
def test_empty(self): mat = matrix.Matrix([]) self.assertEqual(mat.test_rectangle_at((0,0), (0,0)), True) self.assertEqual(mat.test_rectangle_at((0,0), (1,1)), False) self.assertEqual(mat.test_rectangle_at((1,1), (1,1)), False)