# -*- coding:utf-8 -*- __projet__ = "Corrections" __nom_fichier__ = "carre_magique" __author__ = "Prénom Nom" __date__ = "janvier 2022" def somColonne(carre, numcol): """ @param carre: grille sous forme de liste de listes @param numcol: numéro d'une colonne @return: la somme des éléments de la colonne """ s = 0 for ligne in carre: # pour chaque ligne dans le carré, on additoonne les valeurs de la colonne numcol s += ligne[numcol] return s def somLigne(carre, numlig): """ @param carre: grille sous forme de liste de listes @param numlig: numéro d'une ligne @return: la somme des éléments de la ligne """ return sum(carre[numlig]) def apparait(carre, v): """ @param carre: carre @param v: valeur @return: True si v apparaîtdans carre False sinon """ for ligne in carre: if v in ligne : return True def estUnCarreMagique(carre): """ @param carre: grille sous forme de liste de listes @return: True si le carre est un carré magique False sinon """ # on regarde si chaque valeur de 1 à n² apparaît dans le tableau n = len(carre) for i in range(1, n*n+1): if not apparait(carre, i): return False # on teste la somme des valeurs sur chaque ligne et sur chaque colonne # récupère la somme de la ligne 0 s = somLigne(carre, 0) # vérification sur les lignes et colonnes en même temps car on a un carré for k in range(len(carre)): if somLigne(carre, k) != s: return False if somColonne(carre, k) != s: return False return True if __name__ == '__main__': carre = [[17, 24, 1, 8, 15], [23, 5, 7, 14, 16], [4, 6, 13, 20, 22], [10, 12, 19, 21, 3], [11, 18, 25, 2, 9]] print(somColonne(carre, 3)) print(somLigne(carre, 4)) print(estUnCarreMagique(carre)) carre = [[17, 24, 1, 8, 15], [23, 5, 7, 14, 16], [4, 6, 12, 20, 22], [10, 12, 19, 21, 3], [11, 18, 25, 2, 9]] print(estUnCarreMagique(carre)) carre = [[17, 24, 30, 8, 15], [23, 5, 7, 14, 16], [4, 6, 12, 20, 22], [10, 12, 19, 21, 3], [11, 18, 25, 2, 9]] print(estUnCarreMagique(carre))