Demande de conseil pour créer un carre magique d'ordre n en language C

olimbeau Messages postés 1 Date d'inscription mercredi 26 octobre 2005 Statut Membre Dernière intervention 26 octobre 2005 - 26 oct. 2005 à 00:28
MrdJack Messages postés 146 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 8 mars 2008 - 26 oct. 2005 à 14:47
bonjour je cherche comment peut on faire pour faire un carré magique d'ordre n donné par l'utilisateur
merci de me repondre au plus vite

1 réponse

MrdJack Messages postés 146 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 8 mars 2008 2
26 oct. 2005 à 14:47
salut, je peut te donner une méthode rapide pour les ordre impair :



tu commences à 1 sur la case du milieu sur la ligne du haut,

les quatre regles à suivre pour remplir ce carré magique sont suivantes :
- toujours remplir la case se situant sur la ligne au dessus de la précédante à la droite de celle ci.

- si la case en diagonale haut droite est déja utilisée, aller sur la case de droite.

- si la ligne du dessus est hors du carré, aller a la derniere ligne du carré magique (ne pas oublier d'aller a droite)

- si la colonne de droite se situe hors du carré, aller à la premiere
colonne de celui ci (en n'oubliant pas d'aller a la ligne supérieure)

--> les deux derniere regles peuvent etre utilisées en meme temps donc effet bizare des fois !



cette méthode est tres rapide car elle permet de créer un des carrés
magiques d'ordre n possibles si n est impair en utilisant juste une
boucle for allant de 1 à n².



voici un exemple avec n=3 :



9 1 5

3 4 8

6 7 2


je ne connai pas d'autre méthode pour tracer rapidement un carré
magique d'ordre n à part la méthode brute force qui consiste à essayer
toutes les combinaisons possibles et de tester a chaque fois la
validité du carré magique. pour les carrés ayant un ordre assez faible
(<4) c'est assez rapide de tous les trouver. ensuite, ca prend
beaucoup de temps....



voila j'espere t'avoir aidé....





@++
0
Rejoignez-nous