Soluzione 1
def determinante(m):
#------------------------------------- Matrice di Sarrus
sarrus=[]
for r in range(3):
riga=[]
for c in range(3):
riga.append(m[r][c])
riga.append(m[r][0])
riga.append(m[r][1])
sarrus.append(riga)
#------------------------------------- Determinante
somma = 0
for c in range(0,3):
prod=1
for k in range(3):
prod *= sarrus[k][c+k]
somma += prod
for c in range(3):
prod=1
for k in range(3):
prod *= sarrus[2-k][c+k]
somma -= prod
return somma
Soluzione 2
Non è necessario generare una nuova matrice.
L’indice della colonna viene ridotto all’intervallo 0..2 con %
def determinante(m):
somma = 0
for c in range(0,3):
prod=1
for k in range(3):
prod *= sarrus[k][(c+k)%3]
somma += prod
for c in range(3):
prod=1
for k in range(3):
prod *= sarrus[2-k][(c+k)%3]
somma -= prod
return somma
Soluzione 3
Si tratta di 6 prodotti… si potrebbero scrivere esplicitamente…
def determinante(m):
return ...