# =================================== # Recherche d'un carré magique 4x4 par force brute # en utilisant le module itertools # nsi.gecif.net # décembre 2024 # =================================== from itertools import * # --------------------------------------------------------------------- # c est une liste de 16 éléments (chiffres entre 1 et 15) # chaque élément de la liste représente une case du carré magique : # c[0] c[1] c[2] c[3] # c[4] c[5] c[6] c[7] # c[8] c[9] c[10] c[11] # c[12] c[13] c[14] c[15] # Le carré magique est correctement rempli si # les 4 lignes : # c[0]+c[1]+c[2]+c[3]==c[5]+c[5]+c[6]+c[7]==c[8]+c[9]+c[10]+c[11]==c[12]+c[13]+c[14]+c[15]==\ # les 4 colonnes : # c[0]+c[4]+c[8]+c[12]==c[1]+c[5]+c[9]+c[13]==c[2]+c[6]+c[10]+c[14]==c[3]+c[7]+c[11]+c[15]==\ # les 2 diagonales : # c[0]+c[5]+c[10]+c[15]==c[3]+c[6]+c[9]+c[12]==\ # --------------------------------------------------------------------- # test en utilisant la fonction permutations du module itertools : tout_les_cas=list(permutations(range(1,15+1))) print('Test des %d permutations en cours ...' % len(tout_les_cas)) for c in tout_les_cas: if c[0]+c[1]+c[2]+c[3]==c[5]+c[5]+c[6]+c[7]==c[8]+c[9]+c[10]+c[11]==c[12]+c[13]+c[14]+c[15]==\ c[0]+c[4]+c[8]+c[12]==c[1]+c[5]+c[9]+c[13]==c[2]+c[6]+c[10]+c[14]==c[3]+c[7]+c[11]+c[15]==\ c[0]+c[5]+c[10]+c[15]==c[3]+c[6]+c[9]+c[12]: print("Carré magique trouvé :",c)