Bonjour,
Je vous expose le problème :
Donc.....Un carré magique est une grille carrée dans laquelle des nombres sont placés de telle sorte que la somme des nombres de chaque colonne, chaque ligne et de chacune des deux diagonales soit la même. De plus, Le carré doit contenir une fois chaque nombre, de 1 au nombre de cases de la grille.
Ecrivez un programme qui vérifie si une grille de nombres est un carré magique.
La première ligne de l'entrée contient un entier N : le nombre de cases du côté de la grille de nombres.
Chacune des N lignes suivantes contient N entiers séparés par des espaces : les nombres d'une ligne de la grille.
Vous devez afficher une ligne sur la sortie, contenant le mot "yes" si le carré fourni est un carré magique, et "no" sinon.
La somme des lignes, c'est facile.
Par contre, vérifier les sommes des colonnes et des diagonales.....là c'est déjà bien plus compliqué.
Je vous colle ce que j'ai pour l'instant :
Marche pas. Je ne sais vraiment pas comment m'y prendre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 nbCases = int(input()) carre = [[0] * nbCases for _ in range(nbCases)] for lig in range(nbCases) : lignes,colonnes,diag = 0,0,0 carre[lig] = list(map(int,input().split())) for col in range(nbCases) : lignes += carre[lig][col] colonnes += carre[col][lig] diag += carre[lig][lig] print(diag,colonnes,lignes) if lignes == colonnes == diag : magique = True else : magique = False verif = 0 for nbre in range(1,nbCases**2 + 1) : for lignes in carre : if nbre in lignes : verif += 1 if magique and verif == nbCases**2: print('yes') else : print('no') print(magique,verif)
Déjà, est-ce que la somme des colonnes et des diagonales du carré se font bien dans des boucles for ?
(oui, forcément. Mais comment ? )
D'avance merci pour vos éclairages![]()
Partager