papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Carré magique Lun 5 Mar 2012 - 2:45 | |
| Bonjour tout le monde! Je vous propose un petit programme de calcul de carrés magiques. Un carré magique d'ordre N est un tableau carré N*N qui contient dans ses N² cases une fois et une seule chacun des nombres entiers 1 à N², de telle sorte que la somme des N termes sur chaque ligne, chaque colonne, et chacune des 2 diagonales soit constante. Cette somme est telle que : N*S = 1+2+3+.....+N² = N²*(N²+1)/2 puisque S est la somme des termes sur chaque ligne, et que les N lignes contiennent tous les nombres de 1 à N²; donc S = N*(N²+1)/2 Exemples : carrés magiques d'ordre 3 et 5 4 9 2 3 5 7 8 1 6 Somme = 15 11 24 7 20 3 4 12 25 8 16 17 5 13 21 9 10 18 1 14 22 23 6 19 2 15 Somme = 65 Pour les carrée d'ordre impair, il existe un algorithme de construction relativement simple, fondé sur les 4 principes suivants : 1) On place 1 dans la case située juste sous la case centrale. 2) Lorsqu'on a placé l'entier x-1 dans la case(i,j),on place x dans la case (i+1,j+1). 3) Si un indice de case calculé depasse N, on le prend ègal à 1. 4) Si l'on tombe sur une case dejà occupée, soit (l,k), on essaye de placer le nombre en (l+1,k-1). Si k-1 vaut 0 on prend N. - Code:
-
' *************************************************** ' * CARRES MAGIQUES ' * ' * Version Panoramic 1.0 ' * par Papydall ' * ' ***************************************************
dim titre$ : titre$ = "C A R R E S M A G I Q U E S" width 0,1000 : height 0,700 : caption 0,"Papydall vous présente " + titre$ dim n,i,j,somme,n2,lig,col, entier, nmax, nombre , l,a$ nmax = 31 : ' Ordre max du carré à cause de l'affichage à l'écran
label ordre , magic, affichage, formatage gosub ordre : dim mat(n,n) : gosub magic end ' ================================================== ordre: ' Saisie de l'ordre n du carré print " Ordre du carré ( impair 3...";nmax;") ? "; : input n if (n < 3) or (n > nmax) or (odd (n) = 0) then n = nmax return ' ================================================== affichage: ' affichage du carré for i = 1 to n print : print "ligne " ; a$ = str$ (i) : gosub formatage : print ": " ; for j = 1 to n a$ = str$ (mat (i,j)) gosub formatage next j next i print : print print "La somme de toutes les lignes,toutes les colonnes et les 2 diagonales principales est : " ; somme return ' ==================================================
magic: ' calcul de la matrice n2 = n * n j = int(n / 2) : i = j + 1 for nombre = 1 to n2 if i < n : i = i + 1 : else : i = 1 : end_if if j < n : j = j + 1 : else : j = 1 : end_if while mat(i,j) > 0 if i < n : i = i + 1 : else : i = 1 : end_if if j > 1 : j = j - 1 : else : j = n : end_if end_while mat(i,j) = nombre next nombre somme = n * (n2 + 1) / 2 gosub affichage return ' ================================================== formatage: ' On ajoute les espaces necessaires pour la justification à gauche l = len (a$) if l < 2 : a$ = " " + a$ : else : if l < 3 : a$ = " " + a$ : end_if : end_if print a$ ;" "; return ' ================================================== | |
|
exdragon
Nombre de messages : 601 Date d'inscription : 05/01/2012
| Sujet: Re: Carré magique Lun 5 Mar 2012 - 5:09 | |
| Merci Papydall (ça me rappelle "baby doll") Je suis content d'avoir maintenant la formule de ces carrés ^^ | |
|
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Carré magique Lun 5 Mar 2012 - 7:36 | |
| Sympa, après, je peux mettre des cases en blancs et faire bosser mes enfants pour qu'ils fassent les additions et comblent les trous | |
|
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Carré magique Lun 5 Mar 2012 - 8:46 | |
| Bonjour Papydall J'avais fait dans le temps un programme de ce genre sur mon Hector HRX, et je sortais un carré différent à chaque tirage, ou plutôt les chiffres étaient agencés differrement, ce qui donnait l'impression de ne jamais avoir le même carré magique. | |
|
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Carré magique Lun 5 Mar 2012 - 9:58 | |
| Bignono, le HRX, c'était le blanc avec lecteur de cassettes (juste pour savoir si c'était le même que le mien ...) | |
|
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Carré magique Lun 5 Mar 2012 - 10:54 | |
| Bonjour Jicehel, C'était celui là: https://i.servimg.com/u/f44/17/04/09/94/hector10.jpgIl était prévu pour programmer en Forth. J'avais la cassette "adapteur Basic III", et par la suite j'ai acheté une cartouche Basic 3X, que l'on connectait sur la RS232, une fois chargé en mémoire, on la retirait et on pouvait reconnecter l'imprimante. Toute une époque!!! A + | |
|
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Carré magique Lun 5 Mar 2012 - 11:30 | |
| Je ne l'ai pas gardé, mais c'était mon premier ordi que j'avais eu pour ma communion... le rpemier pour lequel j'avais tapé les listing d'hedogiciel, mais bon, je ne spam pas plus longtemps le post de Papydall (Excuse moi Papydall, ça m'arrive de temps en temps, j'essayerais de me rattraper à l'occasion ) | |
|
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Carré magique Lun 5 Mar 2012 - 12:42 | |
| Jicehel, Ce n'est pas le mien, c'est une photo que j'ai trouvé sur internet et il était comme ça. Je l'ai donné à des enfants, mais les parents l'avait enfermé dans un placard sous prétexte que ça consommait trop de courant! Maintenant, je ne sais pas si il l'ont toujours. J'avais tout donné, revues, manuels, cassettes, cartouches... et je regrette.... mais bon, c'est fait! Tiens, je te donne ce lien, tu as tout ce qui s'est fait chez HECTOR de la société micronique Fance. Tu peux même télécharger un émulateur et faire tourner quelques anciens jeux. J'ai essayé mais ils ne fonctionnent pas tous! http://hectorvictor.free.fr/Bon j'arrête de polluer ce post. Excuse moi Papydall. | |
|