J'avais écrit, il y a maintenant longtemps, un programme de calcul de carrés magiques et d'animation sur mon Apple IIe ! J'ai eu envie de m'y remettre avec des moyens technologiques plus évolués...
Pour ceux qui ignorent ce qu'est un carré magique : il s'agit d'un carré comportant un certain nombre de cases avec un nombre par case en utilisant les nombres de un jusqu'au nombre total de cases. Pour que le carré soit magique il faut que la somme (somme magique) des lignes, colonnes et diagonales soit identique. Pourquoi magique ? Tout simplement parce que ces carrés sont utilisés dans des rituels plus ou moins sulfureux et sont censés posséder des pouvoirs...
Je me suis dit qu'avec la puissance de calcul de ma machine il suffisait d'analyser toutes les permutations et de déterminer ainsi facilement la nature magique des carrés calculés. Tout allait bien pour l'ordre 3 (l'ordre est le nombre de cases d'un côté du carré), mais à partir de 4 le nombre de permutations devient indécent et il aurait fallu à peu près deux siècles pour achever le calcul... Un peu trop long pour moi...
Alors j'ai revu ma copie et j'ai commencé par déterminer les séries de nombres satisfaisant la somme magique. Ensuite je calcule les permutations de ces séries, ce qui constitue des groupes, enfin je combine ces groupes entre eux en envisageant toutes les permutations. Pour l'ordre 4 je passe ainsi de 2 siècle à une douzaine de jours sur un celeron 400. Pour l'ordre 5 je n'ai pas osé lancer le calcul...
La base jointe au programme a été constituée en 4 jours. Elle comporte tous les carrés d'ordre 3 et à peu près un tiers des carrés d'ordre 4. Pour ceux qui veulent continuer le calcul faut pas vous gêner...
Pour la présentation des carrés j'ai créé deux contrôles : le premier avec les nombres dans des labels, le second représente graphiquement le carré en reliant tous les nombres de 1 au dernier.
Je pense qu'il y a moyen d'optimiser le calcul et je suis preneur pour toute suggestion dans ce sens.
Merci à seyev pour sa jolie classe pour les permutations, j'ai juste dû l'adapter un peu pour qu'elle digère des nombres.
Le but final de la manoeuvre est l'aspect graphique avec la création de jolis motifs. Si des demandes vont dans ce sens je pourrai améliorer cet aspect avec quelques délires graphiques...
Source / Exemple :
ZIP
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.