Labyrinthe mon programme ne marche pas
DEMS
-
Pierrecastor Messages postés 41491 Date d'inscription Statut Modérateur Dernière intervention -
Pierrecastor Messages postés 41491 Date d'inscription Statut Modérateur Dernière intervention -
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
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide