Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(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….

mini_210308092537835241.jpg

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 8801

Test 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 8801

Test 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

Re : CARRES MAGIQUES Exercice de programmation

Dilou a écrit :

plus généralement semble-t-il avec les chiffres « parfaits » …. !

Non, Désolé, je suis allez un peu vite, ça fonctionne avec le 28 (le 2emme chiffre parfait)


mini_210310064058196396.jpg

Dernière modification par Dilou (10-03-2021 18:32:04)

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

Pied de page des forums