Carrés magiques, un défi récursif

Soyez le premier à donner votre avis sur cette source.

Vue 9 545 fois - Téléchargée 457 fois

Description

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

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
3
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
16 mars 2006

Sympathique...
mais si vous voulez de la vitesse, je ne saurais vous conseiller d'autres langages (même si on est sur vbfrance...). Parce-que je ne pense pas que VBA soit fait pour le calcul haute performance...

Je l'ai fait en C...
et je mets environ 20 minutes pour les carrés 4x4...
puis je l'ai fait en ADA...
et je mets 15~20 minutes en faisant du calcul parallèle avec des tàches ADA.
... le tout sur un AMD 3200+ barton sous linux (autre inconvénient du VBA)


... j'aurais plus vu ce "topic" sur cppfrance...
Messages postés
132
Date d'inscription
samedi 25 mai 2002
Statut
Membre
Dernière intervention
31 août 2007

Bizarre, bizarre... chez moi tout tourne au poil ! frmMain contient des contrôles utilisateurs mais normalement tout y est ! Je vais quand même vérifier le ZIP...
Messages postés
87
Date d'inscription
lundi 4 novembre 2002
Statut
Membre
Dernière intervention
10 mars 2009

idem... marche pas : plein d'error au chargement et division par 0 => ca plante
Messages postés
21
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
1 juillet 2003

Je peux meme pas faire afficher la fenetre FRMMain, y me sort une division par zéro :(
help !
Messages postés
2
Date d'inscription
samedi 28 octobre 2000
Statut
Membre
Dernière intervention
5 août 2002

BestMomo je t'es envoyé le 3x3 et le 4x4, internet ne marché pas Samedi donc j'ai passé ma journé a optimiser et je suis déssendu sous la barre des 40Min.
amuse toi bien. Je ne sais pas si il y a un interet a le mettre dispo sur le site.
Afficher les 12 commentaires

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.