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
| function Y=cheminlepluscourt(X)
[n p]=size(X); %Ceci permet de connaitre la longueur et la largeur de la matrice (du labyrinthe).
if p<=3
Y='impossible'; %Si le nombre de colonnes est inférieur ou égale à 3, la résolution est impossible.
elseif n<=3
Y='impossible'; %Si le nombre de ligne est inférieur ou égale à 3, la résolution est impossible.
else
G=X(2:n-1,2:p-1);
[l c]=size(G);
for i=1:l
for j=1:c
while X(i,j)==0
if i==1 && j>1 && j<c
testvoisins=G(i,j+1)+G(i,j-1)+G(i+1,j)==3;
elseif i==l && j>1 && j<c
testvoisins=G(i,j+1)+G(i,j-1)+G(i-1,j)==3;
elseif j==1 && i>1 && i<l
testvoisins=G(i,j+1)+G(i+1,j)+G(i-1,j)==3;
elseif j==c && i>1 && i<l
testvoisins=G(i,j-1)+G(i+1,j)+G(i-1,j)==3;
elseif i>1 && i<l && j>1 && j<c
testvoisins=G(i,j+1)+G(i,j-1)+G(i+1,j)+G(i-1,j)==3;
elseif i==1 && j==1
testvoisins=G(i,j+1)+G(i+1,j)==2;
elseif i==1 && j==c
testvoisins=G(i,j-1)+G(i+1,j)==2;
elseif i==l && j==1
testvoisins=G(i,j+1)+G(i-1,j)==2;
elseif i==l && j==c
testvoisins=G(i-1,j)+G(i,j-1)==2;
if G(i,j)==0 && testvoisins
G(i,j)=1;
end
end
end
end
end
G
end |
Partager