Labyrinthe mon programme ne marche pas
DEMS
-
Pierrecastor Messages postés 46054 Statut Modérateur -
Pierrecastor Messages postés 46054 Statut Modérateur -
Bonjour,
Un labyrinthe peut-être représenté à l’aide d’une matrice carrée de la forme : Mn,n, on décide que la valeur 1 indique un mur et que la valeur 0 indique un couloir, les seuls mouvements possibles sont a droite et en bas.
j'ai créé une petite fonction qui devrait compter le nombre de chemins possible différents pour aller de la case en haut a gauche (0,0) à la case en bas à gauche(n-1,n-1) pour n=4, Dans mon cas il y'a deux murs, un en bas a droite de la case (0,0) soit en (1,1) et un autre en bas en bas de (0,0) soit en (2,0).
(Je tiens juste a préciser que ma fonction n'est pas vraiment faite pour fonctionner en fonction de n mais plus pour ce cas précis qui est : matrice carrée de coté 4 et les deux murs)
Petit problème, ca ne marche pas, le programme tourne à l'infini, j'ai essayé de résoudre le problème pendant très longtemps mais je n'y arrive pas.
voici mon programme:
Merci d'avance pour votre temps et vos réponses.
Un labyrinthe peut-être représenté à l’aide d’une matrice carrée de la forme : Mn,n, on décide que la valeur 1 indique un mur et que la valeur 0 indique un couloir, les seuls mouvements possibles sont a droite et en bas.
j'ai créé une petite fonction qui devrait compter le nombre de chemins possible différents pour aller de la case en haut a gauche (0,0) à la case en bas à gauche(n-1,n-1) pour n=4, Dans mon cas il y'a deux murs, un en bas a droite de la case (0,0) soit en (1,1) et un autre en bas en bas de (0,0) soit en (2,0).
(Je tiens juste a préciser que ma fonction n'est pas vraiment faite pour fonctionner en fonction de n mais plus pour ce cas précis qui est : matrice carrée de coté 4 et les deux murs)
Petit problème, ca ne marche pas, le programme tourne à l'infini, j'ai essayé de résoudre le problème pendant très longtemps mais je n'y arrive pas.
voici mon programme:
def laby4x4(n):
m=[4*[0]+[1]]+[4*[0]+[1]]+[4*[0]+[1]]+[4*[0]+[1]]+[5*[1]] #Creation de la matrice pour 4 de coté
m[1][1],m[2][0]=1,1
a=True
nb=0 #nb de chemin diffèrent possible
l=0 #lignes (0,1,2,3...)
c=0 #colonnes
i=0
P=[-1]*(2*(n-1)) #tableau pour calculer la profondeur descendue (en lignes) la première fois que la matrice est descendu
while a==True:
w=True
P=[-1]*(2*n-1)
l,c,i=0,0,0 #l(lignes) c(colonnes) i(itérateur du tableau P)
if m[1][0]==1 and m[0][1]==1 : # si mur en bas et a droite
a=False
while w==True:
if c==3 and l==3: #si arriver tt en bas a gauche
nb+=1 # +1 chemin
m[maxPronfondeur(P,i,0)][maxPronfondeur(P,i,1)]=1
w=False
print("a")
else:
if m[l+1][c]==1: #si mur en bas
if m[l][c+1]==1: # et si mur a droite recommencer a (0,0) et griser la case pour ne plus y revenir
m[c][l]=1
w=False
else: # si pas de mur a droite sachant que mur en bas , aller a droite
c+=1
P[i]=1
i+=1
else: #si pas de mur en bas, aller en bas
l+=1
P[i]=0
i+=1
return nb
def maxPronfondeur(t,n,a):
p=0
c=0
for i in range(n):
if t[i]==0:
p+=1
else:
if p==0:
c+=1
else:
if a==0:
return p
else:
return c
if a==0:
return p
else:
return c
#0 0 0 0 1
#0 1 0 0 1
#1 0 0 0 1
#0 0 0 0 1
#1 1 1 1 1
Merci d'avance pour votre temps et vos réponses.
Configuration: Windows / Chrome 95.0.4638.54
A voir également:
- Labyrinthe mon programme ne marche pas
- Programme demarrage windows - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Comment fermer un programme qui ne répond pas - Guide
- Programme word gratuit - Guide
- Message programmé iphone - Guide