Determinant and permanent: Difference between revisions
Content added Content deleted
(→{{header|Simula}}: reduced overspecification; conditional index instead of four-branch-if-else in firstMINOR) |
(Added Sidef) |
||
Line 1,974: | Line 1,974: | ||
permanent: 6778800 |
permanent: 6778800 |
||
</pre> |
</pre> |
||
=={{header|Sidef}}== |
|||
The `determinant` method is provided by the Array class. |
|||
{{trans|Ruby}} |
|||
<lang ruby>class Array { |
|||
method permanent { |
|||
var r = @^self.len |
|||
var sum = 0 |
|||
r.permutations { |*a| |
|||
var prod = 1 |
|||
[a,r].zip {|row,col| prod *= self[row][col] } |
|||
sum += prod |
|||
} |
|||
return sum |
|||
} |
|||
} |
|||
var m1 = [[1,2],[3,4]] |
|||
var m2 = [[1, 2, 3, 4], |
|||
[4, 5, 6, 7], |
|||
[7, 8, 9, 10], |
|||
[10, 11, 12, 13]] |
|||
var m3 = [[0, 1, 2, 3, 4], |
|||
[5, 6, 7, 8, 9], |
|||
[10, 11, 12, 13, 14], |
|||
[15, 16, 17, 18, 19], |
|||
[20, 21, 22, 23, 24]] |
|||
[m1, m2, m3].each { |m| |
|||
say "determinant:\t #{m.determinant}\npermanent:\t #{m.permanent}\n" |
|||
}</lang> |
|||
{{out}} |
|||
<pre>determinant: -2 |
|||
permanent: 10 |
|||
determinant: 0 |
|||
permanent: 29556 |
|||
determinant: 0 |
|||
permanent: 6778800 |
|||
</pre> |
|||
=={{header|Simula}}== |
=={{header|Simula}}== |
||
<lang simula>! MATRIX ARITHMETIC ; |
<lang simula>! MATRIX ARITHMETIC ; |