Trouver la sortie
Trouver la sortie
Bonjour,
j'ai le labyrinthe suivant et je dois tracer le chamin qui mène à la sortie : J'ai écrit la fonction suivante dans laquelle je crée en fait une matrice de 0 et je regarde à partir de la case départ quel est la case libre disponible, la plus proche et je m'y engouffre, en ajoutant les coordonnées dans la liste chemin. Chaque case visité et marqué d'un 1 et ne peut être revisité. Si j'arrive sur une impasse je reviens en arrière en supprimant les coordonnées de la case de la liste chemin mais la case reste marqué d'un 1 donc en revenant sur mes pas je suis sûre de retrouver une case valide. Seulement, il semble qu'il y ait une erreur dans ma fonction, le message suivant s'inscrit "unindent does not match any outer indentation level".
Je n'arrive pas à détecter mon erreur serait il possible de m'aider?
Merci d'avance
from pylab import *
L=imread("labyrinthe.png")
imshow(L,interpolation='none')
show()
couloirs = zeros((49,49))
for i in range (len(L)):
for j in range(len(L)):
if L[i,j,0] == 1 and L[i,j,1]==1 and L[i,j,2]==1:
couloirs[i,j]=1
if L[i,j,0] == 1 and L[i,j,1]==0 and L[i,j,2]==0:
couloirs[i,j]=1
depart = [i,j]
arrivee=[48,47]
chemin=[depart]
cheminpossible = zeros((49,49))
cheminpossible[départ]=1
for i in range (len(L)):
for j in range(len(L)):
while [i,j]!=arrivee:
if couloirs[i+1,j]==1 and cheminpossible[i,j]==0:
cheminpossible[i,j+1]=1
chemin.append([i+1,j])
elif couloirs[i+1,j+1]==1 and cheminpossible[i,j]==0:
cheminpossible[i+1,j+1]=1
chemin.append([i+1,j+1])
elif couloirs[i,j+1]==1 and cheminpossible[i,j]==0:
cheminpossible[i,j+1]=1
chemin.append([i,j+1])
else:
chemin.remove(chemin[-1])
return chemin
j'ai le labyrinthe suivant et je dois tracer le chamin qui mène à la sortie : J'ai écrit la fonction suivante dans laquelle je crée en fait une matrice de 0 et je regarde à partir de la case départ quel est la case libre disponible, la plus proche et je m'y engouffre, en ajoutant les coordonnées dans la liste chemin. Chaque case visité et marqué d'un 1 et ne peut être revisité. Si j'arrive sur une impasse je reviens en arrière en supprimant les coordonnées de la case de la liste chemin mais la case reste marqué d'un 1 donc en revenant sur mes pas je suis sûre de retrouver une case valide. Seulement, il semble qu'il y ait une erreur dans ma fonction, le message suivant s'inscrit "unindent does not match any outer indentation level".
Je n'arrive pas à détecter mon erreur serait il possible de m'aider?
Merci d'avance
from pylab import *
L=imread("labyrinthe.png")
imshow(L,interpolation='none')
show()
couloirs = zeros((49,49))
for i in range (len(L)):
for j in range(len(L)):
if L[i,j,0] == 1 and L[i,j,1]==1 and L[i,j,2]==1:
couloirs[i,j]=1
if L[i,j,0] == 1 and L[i,j,1]==0 and L[i,j,2]==0:
couloirs[i,j]=1
depart = [i,j]
arrivee=[48,47]
chemin=[depart]
cheminpossible = zeros((49,49))
cheminpossible[départ]=1
for i in range (len(L)):
for j in range(len(L)):
while [i,j]!=arrivee:
if couloirs[i+1,j]==1 and cheminpossible[i,j]==0:
cheminpossible[i,j+1]=1
chemin.append([i+1,j])
elif couloirs[i+1,j+1]==1 and cheminpossible[i,j]==0:
cheminpossible[i+1,j+1]=1
chemin.append([i+1,j+1])
elif couloirs[i,j+1]==1 and cheminpossible[i,j]==0:
cheminpossible[i,j+1]=1
chemin.append([i,j+1])
else:
chemin.remove(chemin[-1])
return chemin
Re: Trouver la sortie
J'ai la fonction suivante et on me dit que mon return est en dehors de la fonction dans tous les cas... Pourquoi?
Re: Trouver la sortie
il n'y a pas de définition de fonction donc le return produit une erreur.
il faut aussi peut-être réinitialiser i et j avant le while, et les incrémenter dans la boucle, sinon...
Il semble aussi qu'il y ait des erreurs dans tes tests de case disponible.
il faut aussi peut-être réinitialiser i et j avant le while, et les incrémenter dans la boucle, sinon...
Il semble aussi qu'il y ait des erreurs dans tes tests de case disponible.
Re: Trouver la sortie
Ce code est une horreur
from X import * : NON. jamais sauf si on sait exactement ce qu'on fait. Pourquoi? Parce que ça peut écraser des noms existants sans rien dire. Par exemple, math.sqrt scipy.sqrt et numpy.sqrt sont trois fonctions différentes. On import seulement ce dont on a besoin.
arrivee=[48,47] : là comme ça en plein milieu du code? non. Si tu veux déclarer des globales alors fait le avant tout le reste.
return sans déclaration de fonction??? As tu compris ce que fais "return"? Explique nous
from X import * : NON. jamais sauf si on sait exactement ce qu'on fait. Pourquoi? Parce que ça peut écraser des noms existants sans rien dire. Par exemple, math.sqrt scipy.sqrt et numpy.sqrt sont trois fonctions différentes. On import seulement ce dont on a besoin.
arrivee=[48,47] : là comme ça en plein milieu du code? non. Si tu veux déclarer des globales alors fait le avant tout le reste.
return sans déclaration de fonction??? As tu compris ce que fais "return"? Explique nous
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.