September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
88
Task/Matrix-arithmetic/Phix/matrix-arithmetic.phix
Normal file
88
Task/Matrix-arithmetic/Phix/matrix-arithmetic.phix
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
function minor(sequence a, integer x, integer y)
|
||||
integer l = length(a)-1
|
||||
sequence result = repeat(repeat(0,l),l)
|
||||
for i=1 to l do
|
||||
for j=1 to l do
|
||||
result[i][j] = a[i+(i>=x)][j+(j>=y)]
|
||||
end for
|
||||
end for
|
||||
return result
|
||||
end function
|
||||
|
||||
function det(sequence a)
|
||||
if length(a)=1 then
|
||||
return a[1][1]
|
||||
end if
|
||||
integer sgn = 1
|
||||
integer res = 0
|
||||
for i=1 to length(a) do
|
||||
res += sgn*a[1][i]*det(minor(a,1,i))
|
||||
sgn *= -1
|
||||
end for
|
||||
return res
|
||||
end function
|
||||
|
||||
function perm(sequence a)
|
||||
if length(a)=1 then
|
||||
return a[1][1]
|
||||
end if
|
||||
integer res = 0
|
||||
for i=1 to length(a) do
|
||||
res += a[1][i]*perm(minor(a,1,i))
|
||||
end for
|
||||
return res
|
||||
end function
|
||||
|
||||
constant tests = {
|
||||
{{1, 2},
|
||||
{3, 4}},
|
||||
--Determinant: -2, permanent: 10
|
||||
{{2, 9, 4},
|
||||
{7, 5, 3},
|
||||
{6, 1, 8}},
|
||||
--Determinant: -360, permanent: 900
|
||||
{{ 1, 2, 3, 4},
|
||||
{ 4, 5, 6, 7},
|
||||
{ 7, 8, 9, 10},
|
||||
{10, 11, 12, 13}},
|
||||
--Determinant: 0, permanent: 29556
|
||||
{{ 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}},
|
||||
--Determinant: 0, permanent: 6778800
|
||||
{{5}},
|
||||
--Determinant: 5, permanent: 5
|
||||
{{1,0,0},
|
||||
{0,1,0},
|
||||
{0,0,1}},
|
||||
--Determinant: 1, permanent: 1
|
||||
{{0,0,1},
|
||||
{0,1,0},
|
||||
{1,0,0}},
|
||||
--Determinant: -1, Permanent: 1
|
||||
{{4,3},
|
||||
{2,5}},
|
||||
--Determinant: 14, Permanent: 26
|
||||
{{2,5},
|
||||
{4,3}},
|
||||
--Determinant: -14, Permanent: 26
|
||||
{{4,4},
|
||||
{2,2}},
|
||||
--Determinant: 0, Permanent: 16
|
||||
{{7, 2, -2, 4},
|
||||
{4, 4, 1, 7},
|
||||
{11, -8, 9, 10},
|
||||
{10, 5, 12, 13}},
|
||||
--det: -4319 permanent: 10723
|
||||
|
||||
{{-2, 2, -3},
|
||||
{-1, 1, 3},
|
||||
{2 , 0, -1}}
|
||||
--det: 18 permanent: 10
|
||||
}
|
||||
for i=1 to length(tests) do
|
||||
sequence ti = tests[i]
|
||||
?{det(ti),perm(ti)}
|
||||
end for
|
||||
Loading…
Add table
Add a link
Reference in a new issue