def transitive_closure_adj(matrix: Matrix) -> Matrix: adj = matrix.dup() result = matrix.dup() changed = True while changed: old_nvals = result.nvals result += adj @ result new_nvals = result.nvals if old_nvals == new_nvals: changed = False return result
def test_matrix_create_dup(): m = Matrix.from_type(int, 10, 10) m[3, 3] = 3 n = Matrix.dup(m) assert n.nrows == 10 assert n.ncols == 10 assert n.nvals == 1 assert n[3, 3] == 3