A = [ [2, 7, 6],
[9, 5, 1],
[4, 3, 8]
]
B = [ [4, 14, 15, 1],
[9, 7, 6, 12],
[5, 11, 10, 8],
[16, 2, 3, 13]
]
C = [ [4, 14, 15, 1],
[9, 7, 6, 12],
[5, 11, 10, 8],
[0, 0, 0, 0]
]
def sommeLigne(matrice, numero_ligne):
"""
matrice -- matrice carrée d'entiers
numero_ligne -- entier
renvoie la somme des entiers de la ligne numero_ligne de matrice
"""
somme = 0
ligne = matrice[numero_ligne]
for valeur in ligne:
somme += valeur
return somme
def sommeColonne(matrice, numero_colonne):
"""
matrice -- matrice carrée d'entiers
numero_colonne -- entier
renvoie la somme des entiers de la colonne numero_colonne de matrice
"""
somme = 0
colonne = [ matrice[i][numero_colonne] for i in range(0,len(matrice))]
for valeur in colonne:
somme += valeur
return somme
def sommeDiagonale_NO_SE(matrice):
"""
matrice -- matrice carrée d'entiers
renvoie la somme des entiers de la diagonale \
"""
somme = 0
diagonale = [matrice[i][i] for i in range(0,len(matrice))]
for valeur in diagonale:
somme += valeur
return somme
def sommeDiagonale_SO_NE(matrice):
"""
matrice -- matrice carrée d'entiers
renvoie la somme des entiers de la diagonale /
"""
somme = 0
n = len(matrice)
diagonale = [matrice[i][n-1-i] for i in range(0,n)]
for valeur in diagonale:
somme += valeur
return somme
def est_magique(matrice):
"""
matrice -- matrice carrée d'entiers
renvoie True si matrice est un carré magique, False sinon.
"""
n = len(matrice) # nombre de lignes de matrice
constante_magique = sommeLigne(matrice, 0)
for k in range(1, n):
if sommeLigne(matrice, k) != constante_magique: return False
for k in range(0, n):
if sommeColonne(matrice, k) != constante_magique: return False
if sommeDiagonale_NO_SE(matrice) != constante_magique: return False
if sommeDiagonale_SO_NE(matrice) != constante_magique: return False
return True
est_magique(A)
est_magique(B)
est_magique(C)