VienzProe
unread,May 6, 2022, 10:20:12 AM5/6/22You do not have permission to delete messages in this group
Sign in to report message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Bonjour,
Je dois réaliser un solveur qui doit me renvoyer une liste de directions pour
gagner la partie (on a un plateau, c'est une liste de listes avec des buissons
représentés par un 'B' et des touffes d'herbe représenté par un ' G ' et le but,
c'est que sur chaque touffe d'herbe il y a un mouton représenté par un 'S'.).
J'ai élaboré un solveur, mais le problème, c'est qui ne renvoie qu'une seule
direction. Pouvez-vous m'aider s'il vous plaît ?
Je vous remercie d'avance.
def solveur(moutons,plateau,visite,nombre_herbe,liste_direction):
"e;"e;"e;
Le rôle du solveur est de déterminer s’il est possible
de gagner à partir d’un état du jeu donné. En cas de réponse positive, le
solveur doit aussi fournir
une solution à la grille, c’est-à-dire une liste des coups à jouer pour
arriver à la victoire.
param: plateau : list
param: liste_direction : list
param: moutons : list de tuple
param: visite : set
"e;"e;"e;
plateau,plateau_jeu = init_plateau(plateau)
plateau_jeu = tuple(plateau_jeu)
moutons_tuples = tuple(moutons)
if victoire(plateau,moutons,nombre_herbe) :
return []
if moutons_tuples in visite :
if plateau_jeu in visite:
return None
else :
visite.add(tuple(plateau_jeu))
visite.add(moutons_tuples)
dir = tuple(liste_direction[0])
sol = solveur(jouer(plateau_jeu,moutons,dir),
plateau_jeu,visite,nombre_herbe,liste_direction)
if sol != [] and dir[0] == 'L':
return ['Left'] + [sol]
if sol != [] and dir[0] == 'R':
return ['Right'] + [sol]
if sol != [] and dir[0] == 'U':
return ['Up'] + [sol]
if sol != [] and dir[0] == 'D':
return ['Down'] + [sol]
else :
return solveur(moutons,plateau_jeu,visite,
nombre_herbe,liste_direction[1:])