Carré magique |
Carrés magiques
Remplir un carré magique : c’est disposer les nombres 0 à dans un carré de cases, de telle sorte que la somme des nombres dans chaque ligne, chaque colonne et sur les deux diagonales soit la même. Dès que le carré est supérieur à cases, il devient nécessaire de disposer d’une méthode. Nous allons considérer un exemple. Remplissons une grille de Nous plaçons tout d’abord 0 dans la case du milieu du bord gauche. En suivant la petite flèche nous sortirions du carré. Il faut donc placer 1 dans la case correspondante sur le bord opposé, et ainsi de suite jusqu’à 6. Il n’est plus possible de continuer puisque la case suivante est occupée. Il suffit de placer 7 à droite de 6 puis de reprendre la progression. Essayez de terminer seul ; vous pourrez vérifier que vous avez réalisé un carré magique puisque la somme des nombres placés dans chaque ligne, chaque colonne et chaque diagonale est constante (168). L’inconvénient majeur de cette solution c’est l’espace mémoire occupé puisqu’il faut se doter d’un tableau de cases. Un autre algorithme consiste à produire la valeur de chaque case dans l’ordre de lecture, de gauche à droite et de bas en haut. Supposons, pour simplifier, un carré magique de déjà réalisé et étudions sa composition :
14 15 21 2 8 7 13 19 20 1 0 6 12 18 24 23 4 5 11 17 16 22 3 9 10
cote = SAISIR () ; b = cote - 1 ; a = (cote - 1) / 2 ; for (ligne = 0 ; ligne < cote ; ligne++) { for (col = 0 ; col < cote ; col++) { IMPRIMER (a * cote) + b ; if (col != (cote - 1)) { a++ ; a = a modulo cote ; b++ ; b = b modulo cote ; } } b-- ; }