1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| function x = mat(X)
n=51;
n=input('Introduisez un nombre compris entre 51 et 90 [n]: ', 's');
tic;
X=diag([51 51 51 51],0);
while X(1,1)<=0 | X(1,2)<=0 | X(1,3)<=0 | X(1,4)<=0 | X(2,1)<=0 | X(2,2)<=0 | X(2,3)<=0 | X(2,4)<=0 | X(3,1)<=0 | X(3,2)<=0 | X(3,3)<=0 | X(3,4)<=0 | X(4,1)<=0 | X(4,2)<=0 | X(4,3)<=0 | X(4,4)<=0,
%matrice 2 sur 2
mem1=1+round(24*rand(1));X(2,1)=mem1;X(1,2)=mem1;
X(1,1)=51-mem1; X(2,2)=51-mem1;
%matrice 3 sur 3
mem1=1+round(14*rand(1));
mem2=1+round(14*rand(1));
X(3,1)=mem1; X(3,2)=mem2;
X(1,3)=mem1; X(2,3)=mem2;
X(1,1)=X(1,1)-mem1;X(2,2)=X(2,2)-mem2;X(3,3)=51-mem1-mem2;
%matrice 4 sur 4
mem1=1+round(9*rand(1));
mem2=1+round(9*rand(1));
mem3=1+round(9*rand(1));
X(4,1)=mem1; X(4,2)=mem2; X(4,3)=mem3;
X(1,4)=mem1; X(2,4)=mem2; X(3,4)=mem3;
X(1,1)=X(1,1)-mem1;X(2,2)=X(2,2)-mem2;X(3,3)=X(3,3)-mem3;X(4,4)=51-mem1-mem2-mem3;
%somme diagonale égal 4*51-6*mem1-4*mem2-2*mem3(nombre pair)
%diagonales
diag1=sum(X([1,6,11,16]));
diag2=sum(X([4,7,10,13]));
i=1;
while diag1+diag2>100,%obtenir somme des 2 diagonales égale à 102
X(i,i)=X(i,i)-1;a=mod(i+1,5);if a==0,a=1;end;X(a,a)=X(a,a)-1;X(i,a)=X(i,a)+1;X(a,i)=X(a,i)+1;i=a;
diag1=sum(X([1,6,11,16]));diag2=sum(X([4,7,10,13]));
end;%la diagonale est tjs un nb pair
X(1,1)=X(1,1)+1;X(2,3)=X(2,3)+1;X(2,1)=X(2,1)-1;X(1,3)=X(1,3)-1;%obtenir nombres impairs
diag1=sum(X([1,6,11,16]));
diag2=sum(X([4,7,10,13]));
dif1=((diag1)-51)/2;%obtenir somme égale à 51
dif2=((diag2)-51)/2;
X(1,1)=X(1,1)-dif1;
X(4,4)=X(4,4)-dif1;
X(1,4)=X(1,4)-dif2;
X(4,1)=X(4,1)-dif2;
%la suite
dif=sum(X([1 2 5 6]))-51;
X(1,2)=X(1,2)-dif;
X(4,2)=X(4,2)+dif;
X(1,3)=X(1,3)+dif;
X(4,3)=X(4,3)-dif;
end;
%On étend la méthode pour une somme comprise entre 51 et 90
X(1,4)==X(1,4)+ n - 51;
X(2,1)==X(2,1)+ n - 51;
X(3,3)==X(3,3)+ n - 51;
X(4,2)==X(4,2)+ n - 51;
toc;
%vérification
sum(X,1),%colonnes
sum(X,2),%lignes
sum(X([1,6,11,16])),%diagonale1
sum(X([4,7,10,13])),%diagonale2
X(1,1)+X(4,4)+X(1,4)+X(4,1),%les 4 coins
X(2,2)+X(3,3)+X(3,2)+X(2,3),%le carré au centre
X(2,1)+X(3,1)+X(2,4)+X(3,4),%les côtés droit et gauche
X(1,2)+X(1,3)+X(4,2)+X(4,3),%les côtés haut et bas
%les 4 carrés
sum(X([1 2 5 6])),
sum(X([3 4 7 8])),
sum(X([9 10 13 14])),
sum(X([11 12 15 16])),
%les obliques
X(1,2)+X(2,1)+X(3,4)+X(4,3),
X(3,1)+X(4,2)+X(1,3)+X(2,4),
X |
Partager