[4 kyu] Matrix Determinant

    科技2025-09-30  47

    [4 kyu] Matrix Determinant

    文章目录

    [4 kyu] Matrix DeterminantQuestionSample TestsMy Answer (accepted)Suggested Answer

    Question

    Sample Tests

    My Answer (accepted)

    """ Matrix Determinant (n*n) Calculate the determinant with Laplace expansion method """ def get_M(x_index, y_index, matrix): """ Get a remainder of the determinant """ M_ans = [] for row in range(len(matrix)): element_tmp = [] if x_index == row: continue for column in range(len(matrix[row])): if y_index == column: continue element_tmp.append(matrix[row][column]) M_ans.append(element_tmp) return M_ans def determinant(matrix): """ Calculate the determinant with Laplace expansion method """ # Termination condition if len(matrix) == 1: return matrix[0][0] elif len(matrix) == 2: return matrix[0][0]*matrix[1][1] - matrix[0][1]*matrix[1][0] # Recursive condition else: ans = 0 for i in range(len(matrix)): # Algebraic remainder A_matrix_ans = (-1)**(0+i) * determinant(get_M(0, i, matrix)) ans += matrix[0][i] * A_matrix_ans return ans if __name__ == "__main__": m0 = [ [2] ] m1 = [ [1, 3], [2, 5]] m2 = [ [2, 5, 3], [1, -2, -1], [1, 3, 4]] print(determinant(m0))

    Suggested Answer

    import numpy as np def determinant(a): return round(np.linalg.det(np.matrix(a))) def determinant(m): a = 0 if len(m) == 1: a = m[0][0] else: for n in xrange(len(m)): if (n + 1) % 2 == 0: a -= m[0][n] * determinant([o[:n] + o[n+1:] for o in m[1:]]) else: a += m[0][n] * determinant([o[:n] + o[n+1:] for o in m[1:]]) return a
    Processed: 0.008, SQL: 8