OVH Cloud OVH Cloud

[HS] Magik serge

3 réponses
Avatar
Modeste®
Bonsour(=AE)
en r=E9ponse =E0 une de tes pr=E9c=E9dentes interventions :
Pose le code ci-dessous dans une feuille=20
puis en A1=20
mets une valeur comprise entre 1 et 9
puis active la macro .....

voir plus bas question subsidiaire :

Sub MagikSerge()
ordre =3D 1 + 2 * [A1].Value
[B2].Resize(20, 20).Clear
MsgBox "carr=E9 magique d'ordre " & ordre
Application.ScreenUpdating =3D False
debut =3D Application.WorksheetFunction.Ceiling(ordre/2, 1)
Set Tablo =3D Range("B2")
Tablo.Resize(ordre, ordre).Select
Selection.Interior.Color =3D vbYellow
Cells(2 + debut, 1 + debut).Select
Selection.Value =3D 1
For i =3D 2 To ordre ^ 2
x =3D Selection.Row
y =3D Selection.Column
x =3D IIf(x + 1 > (ordre + 1), 2, x + 1)
y =3D IIf(y + 1 > (ordre + 1), 2, y + 1)
If Cells(x, y) > 0 Then x =3D x - 1: y =3D y + 1
If x < 2 Then x =3D ordre + 1
If (y > (ordre + 1)) Then y =3D 2
Cells(x, y).Select
Selection =3D i
Next
Application.ScreenUpdating =3D True
End Sub

Question :
cet algorithme bas=E9 sur l'observation... ;-)))
g=E9n=E9re des carr=E9s magiques d'ordre impair de 3 =E0 19
comment ce fait-il que cela ne fonctionne pas au-dela ???

il existe certainement d'autres algorithmes bas=E9s sur des=20
formules math=E9matiques,=20
Mais comme d=E9ja signal=E9 je n'ai pas connaissance=20
d'algorithmes math=E9matiques ou empiriques concernant les=20
carr=E9 magiques d'ordre pair !!!

3 réponses

Avatar
garnote
Super ! Vais tenter quelque chose à mon tour.
Je sais au moins une chose sur les carrés magiques
d'ordre n impair :
Les sommes sont égales à n * ( n^2 + 1 ) / 2
Quant aux carrés magiques d'ordre pair, fouille-moé :-)))

Serge




"Modeste®" a écrit dans le message de
news: 216e601c45ac9$69813be0$
Bonsour(®)
en réponse à une de tes précédentes interventions :
Pose le code ci-dessous dans une feuille
puis en A1
mets une valeur comprise entre 1 et 9
puis active la macro .....

voir plus bas question subsidiaire :

Sub MagikSerge()
ordre = 1 + 2 * [A1].Value
[B2].Resize(20, 20).Clear
MsgBox "carré magique d'ordre " & ordre
Application.ScreenUpdating = False
debut = Application.WorksheetFunction.Ceiling(ordre/2, 1)
Set Tablo = Range("B2")
Tablo.Resize(ordre, ordre).Select
Selection.Interior.Color = vbYellow
Cells(2 + debut, 1 + debut).Select
Selection.Value = 1
For i = 2 To ordre ^ 2
x = Selection.Row
y = Selection.Column
x = IIf(x + 1 > (ordre + 1), 2, x + 1)
y = IIf(y + 1 > (ordre + 1), 2, y + 1)
If Cells(x, y) > 0 Then x = x - 1: y = y + 1
If x < 2 Then x = ordre + 1
If (y > (ordre + 1)) Then y = 2
Cells(x, y).Select
Selection = i
Next
Application.ScreenUpdating = True
End Sub

Question :
cet algorithme basé sur l'observation... ;-)))
génére des carrés magiques d'ordre impair de 3 à 19
comment ce fait-il que cela ne fonctionne pas au-dela ???

il existe certainement d'autres algorithmes basés sur des
formules mathématiques,
Mais comme déja signalé je n'ai pas connaissance
d'algorithmes mathématiques ou empiriques concernant les
carré magiques d'ordre pair !!!
Avatar
GD
Bonsour(®) désolé Serge ,
rectification aprés vérification :
l'algorithme fonctionne bien pour n'importe quel carré d'ordre impair.
mais ce ne sont pas de réels carrés magiques :-(((
car les sommes selon les diagonales ne sont pas egales aux sommes lignes ou
colonnes

j'y ai cru un instant !!!
@+

garnote wrote:
Super ! Vais tenter quelque chose à mon tour.
Je sais au moins une chose sur les carrés magiques
d'ordre n impair :
Les sommes sont égales à n * ( n^2 + 1 ) / 2
Quant aux carrés magiques d'ordre pair, fouille-moé :-)))

Serge




"Modeste®" a écrit dans le
message de news: 216e601c45ac9$69813be0$
Bonsour(®)
en réponse à une de tes précédentes interventions :
Pose le code ci-dessous dans une feuille
puis en A1
mets une valeur comprise entre 1 et 9
puis active la macro .....

voir plus bas question subsidiaire :

Sub MagikSerge()
ordre = 1 + 2 * [A1].Value
[B2].Resize(20, 20).Clear
MsgBox "carré magique d'ordre " & ordre
Application.ScreenUpdating = False
debut = Application.WorksheetFunction.Ceiling(ordre/2, 1)
Set Tablo = Range("B2")
Tablo.Resize(ordre, ordre).Select
Selection.Interior.Color = vbYellow
Cells(2 + debut, 1 + debut).Select
Selection.Value = 1
For i = 2 To ordre ^ 2
x = Selection.Row
y = Selection.Column
x = IIf(x + 1 > (ordre + 1), 2, x + 1)
y = IIf(y + 1 > (ordre + 1), 2, y + 1)
If Cells(x, y) > 0 Then x = x - 1: y = y + 1
If x < 2 Then x = ordre + 1
If (y > (ordre + 1)) Then y = 2
Cells(x, y).Select
Selection = i
Next
Application.ScreenUpdating = True
End Sub

Question :
cet algorithme basé sur l'observation... ;-)))
génére des carrés magiques d'ordre impair de 3 à 19
comment ce fait-il que cela ne fonctionne pas au-dela ???

il existe certainement d'autres algorithmes basés sur des
formules mathématiques,
Mais comme déja signalé je n'ai pas connaissance
d'algorithmes mathématiques ou empiriques concernant les
carré magiques d'ordre pair !!!


Avatar
garnote
Salut GD,

Je crois que j'ai et il est temps de quitter
cet infâme ordi !

Sub Carré_Magique_Impair()
pr = 1
n = Application.InputBox(Prompt:= _
"Entrez un nombre entier impair.", Type:=1)
i = (n - 1) / 2
j = (n + 1) / 2
Sheets.Add
Cells(i, j) = 1
Do Until pr = n ^ 2
i = i - 1
j = j + 1
If i < 1 Then i = n
If j < 1 Then j = n
If i > n Then i = 1
If j > n Then j = 1
If Cells(i, j) <> "" Then
i = i - 1
j = j - 1
If i < 1 Then i = n
If j < 1 Then j = n
If i > n Then i = 1
If j > n Then j = 1
End If
pr = pr + 1
Cells(i, j) = pr
Loop
MsgBox "Somme : " & n * (n ^ 2 + 1) / 2
End Sub

Jean Aymard :-)))












"GD" a écrit dans le message de news:

Bonsour(®) désolé Serge ,
rectification aprés vérification :
l'algorithme fonctionne bien pour n'importe quel carré d'ordre impair.
mais ce ne sont pas de réels carrés magiques :-(((
car les sommes selon les diagonales ne sont pas egales aux sommes lignes
ou

colonnes

j'y ai cru un instant !!!
@+

garnote wrote:
Super ! Vais tenter quelque chose à mon tour.
Je sais au moins une chose sur les carrés magiques
d'ordre n impair :
Les sommes sont égales à n * ( n^2 + 1 ) / 2
Quant aux carrés magiques d'ordre pair, fouille-moé :-)))

Serge




"Modeste®" a écrit dans le
message de news: 216e601c45ac9$69813be0$
Bonsour(®)
en réponse à une de tes précédentes interventions :
Pose le code ci-dessous dans une feuille
puis en A1
mets une valeur comprise entre 1 et 9
puis active la macro .....

voir plus bas question subsidiaire :

Sub MagikSerge()
ordre = 1 + 2 * [A1].Value
[B2].Resize(20, 20).Clear
MsgBox "carré magique d'ordre " & ordre
Application.ScreenUpdating = False
debut = Application.WorksheetFunction.Ceiling(ordre/2, 1)
Set Tablo = Range("B2")
Tablo.Resize(ordre, ordre).Select
Selection.Interior.Color = vbYellow
Cells(2 + debut, 1 + debut).Select
Selection.Value = 1
For i = 2 To ordre ^ 2
x = Selection.Row
y = Selection.Column
x = IIf(x + 1 > (ordre + 1), 2, x + 1)
y = IIf(y + 1 > (ordre + 1), 2, y + 1)
If Cells(x, y) > 0 Then x = x - 1: y = y + 1
If x < 2 Then x = ordre + 1
If (y > (ordre + 1)) Then y = 2
Cells(x, y).Select
Selection = i
Next
Application.ScreenUpdating = True
End Sub

Question :
cet algorithme basé sur l'observation... ;-)))
génére des carrés magiques d'ordre impair de 3 à 19
comment ce fait-il que cela ne fonctionne pas au-dela ???

il existe certainement d'autres algorithmes basés sur des
formules mathématiques,
Mais comme déja signalé je n'ai pas connaissance
d'algorithmes mathématiques ou empiriques concernant les
carré magiques d'ordre pair !!!