Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
Discussion fermée
#1 08-03-2021 21:25:51
- Dilou
- Membre
- Inscription : 04-07-2018
- Messages : 29
CARRES MAGIQUES Exercice de programmation
Bonjour à tous,
Pour des raisons de cryptographie (voir ICI ), je me suis « amusé » à créer une routine ( en vba Excel) destinée à me donner ce type de « carré Magique ». Carré qui a comme constante
« C= n (n+1 )/ 2 » . (« n >= 4 » étant la dimension paire ou impaire du carré)
Le carré de départ est vide et le programme trouve en 1er, les 2 diagonales….
Arriverez vous à programmer quelque chose pour arriver à ce résultat ??
Je vous donne 3 indices « I », « J » … et « K » sachez les manipuler et vous arriverez facilement au bout de votre peine.
La résolution d’un Carré de 26x26 par la méthode que j’utilise est construite en 2 minutes (VBA Excel) !
Je profite d’ailleurs de ce post pour vous conseiller la lecture sur ce site de l’excellent article de « Yoshi » sur ce sujet des carrés Magiques.
Bonne Soirée
Hors ligne
#2 09-03-2021 09:45:28
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : CARRES MAGIQUES Exercice de programmation
Bonjour,
Merci pour ta pub ^_^, c'est sympa...
Si n est la dimension du carré et si ce carré est dit "normal", i.e. s'il contient tous les entiers naturels de 1 à n², alors sa constante c est $c=\dfrac{n(n^2+1)}{2}$...
Soit n =4, la constante d'un carré de 4 "normal" de dimension 4 est 34,
Soit n =5, la constante d'un carré de 5 "normal" de dimension 5 est 65,
Soit n=6, la constante d'un carré de 5 "normal" de dimension 6 est 111...
Voici, selon ma méthode de construction via 3 symétries, celui de dimension 22.
https://cjoint.com/c/KCjiAUgVcia
Celui, normal, de dimension 26 a pour constante : $8801=\dfrac{26(26^2+1)}{2}$ :
https://cjoint.com/c/KCjkEGhrpGa
Test des lignes
8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801Test des colonnes
8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801Test des diagonales
8801 8801
Il est bien magique.
Le tien a pour constante 26(26+1)/2 = 351... autant dire qu'il doit lui manquer un sacré paquet de nombres entre 1 et 676 (26²)...
Note de plus que, avec Python (langage interprété, donc relativement lent), "mon" carré d'ordre 26 est calculé et affiché en 1,5 s.
Après, la transformation via Writer de OpenOffice, en un joli tableau en couleur (ici nb impairs sur fond vert, nbs pairs sur fond blanc), ça prend bien plus de temps...
Tes carrés ne sont donc pas des carrés "normaux", ils rejoignent la longue liste des carrés originaux, tels ceux construits à partir des décimales de $\pi$, etc...
Ce n'est pas une critique, mais une précision apportée qui a de l'importance...
@+
Dernière modification par yoshi (09-03-2021 11:32:13)
Hors ligne
#3 10-03-2021 08:23:55
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : CARRES MAGIQUES Exercice de programmation
Re,
Bon, bin, j'ai découvert seulement hier soir que ton image était cliquable... :-(
J'avais donc raison dans mes jugements.
Reste à trouver la méthode : je pensais avoir une piste, mis elle ne marcherait pas pour n=6 (Euler l'a montré en son temps).
Je vais quand même creuser.
@+
Hors ligne
#4 10-03-2021 18:16:49
- Dilou
- Membre
- Inscription : 04-07-2018
- Messages : 29
Re : CARRES MAGIQUES Exercice de programmation
Bonjour Yoshi,
Dans cette page, que vous aviez consacrée à Euler, vous appeliez ce type de carré, des carrés dit "gréco-latins" C'est un plus plus poétique que de les appeler des carrés "originaux" .. ;-)
Pour ce type carré , Euler avait raison.. Les carrés "gréco-latins" sont bien fâchés avec le "6" ou plus généralement semble-t-il avec les chiffres « parfaits » …. !
Hors ligne
#5 10-03-2021 18:26:18
- Dilou
- Membre
- Inscription : 04-07-2018
- Messages : 29
Hors ligne
#6 10-03-2021 18:48:51
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : CARRES MAGIQUES Exercice de programmation
Re,
Oui, c'est bien aux carrés gréco-latins (l'expression n'est pas de moi, mais d'Euler himself) que je pensais... mais en me rafraichissant la mémoire, j'ai pu voir que j'allais trop loin puisqu'il n'est nécessaire "que" d'utiliser n fois les nombres de 1 à n (ce qui n'est d'ailleurs pas bien plus simple que d'utiliser les nombres de 1 à n²) ... Euler pensait qu'il était impossible d'aller au delà de 6 : certains mathématiciens ont montré ensuite qu'il avait - sur ce point - tort...
J'ai tâtonné un peu et est construit un carré d'ordre 4 différent du tien, je suis en train de tâtonner pour n = 5 et la difficulté réside encore sur les diagonales : tâtonner n'est pas raisonner et donc trouver un algorithme fonctionnel.
Quant à ton histoire d'indices I, J, K qui seraient un coup de pouce, je ne m'en préoccupe pas pour les simples et bonnes raisons que
- ce ne doit être parlant que pour ceux qui savent,
- le mot indices est polysémique : il désigne aussi bien des indications censées mettre sur la voie, que les positions des éléments d'un tableau,
- peut-être ici désignent-t-ils les variables qui contrôlent des boucle for. Dans ce cas, c'est gênant, en Python on utiliserait i, j, k...
une boucle pour les lignes, une boucle pour les colonnes, une boucle pour 1 diagonale (1 diagonale si elle est bonne avec des lignes et colonnes correctes - et des if à la pelle - devrait faire que l'autre convienne aussi. Peut-être ai-je tort de le penser sans raisonnement...)
Mais ça, c'est de la programmation, elle n'intervient que lorsqu'on a mis au point l'algorithme et qu'on est capable de le faire fonctionner à la main... Du moins, est-ce comme ça que je programme...
Je vais continuer à examiner de près tes résultats jusqu'à ce qu'une idée vienne me tirer par la manche...
@+
Dernière modification par yoshi (11-03-2021 07:42:48)
Hors ligne
Pages : 1
Discussion fermée









