#!/usr/bin/ruby # Cramer's rule, using the Matrix class # https://rosettacode.org/wiki/Cramer%27s_rule func cramers_rule(A, terms) { ^A -> map {|i| A.dclone.set_column(i, terms).det } »/» A.det } var matrix = Matrix( [2, -1, 5, 1], [3, 2, 2, -6], [1, 3, 3, -1], [5, -2, -3, 3], ) var free_terms = [-3, -32, -47, 49] assert_eq(cramers_rule(matrix, free_terms), [2, -12, -4, 1]) say "** Test passed!"