Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Sorceleur:
- def __init__(self, vie, argent, monstres):
- self.vie = vie
- self.argent = argent
- self.monstres = monstres
- self.visites_docteur = [0]*len(monstres)
- # à la fin on aura self.visites_docteur[i] = 1 si le sorceleur visite le docteur juste avant le i-eme monstre sinon 0
- self.resultat = None
- def backtracking(self, current):
- if self.vie>0:
- if current == len(self.monstres):
- score = 2*self.vie+self.argent-sum(self.visites_docteur)
- if not self.resultat or score>self.resultat[-1] or (score==self.resultat[-1] and self.vie>self.resultat[0]):
- self.resultat = self.vie, self.argent, self.visites_docteur[:], score
- else:
- self.vie -= self.monstres[current][0]
- self.argent += self.monstres[current][1]
- self.backtracking(current + 1)
- self.vie += self.monstres[current][0]
- self.argent -= self.monstres[current][1]
- if self.argent >= 100 and self.vie<50 and not self.visites_docteur[current]:
- self.visites_docteur[current] = 1
- self.vie += 30
- self.argent -= 100
- self.backtracking(current)
- def voici_mon_plan(self):
- self.backtracking(0)
- if not self.resultat:
- return []
- vie, argent, visites, score = self.resultat
- plan = self.monstres
- long = len(self.monstres)
- for i in range(1, long+1):
- if visites[-i]:
- plan[long-i:long-i] = [(-30, -100)]
- return vie, argent, sum(visites), plan
- def afficher_resultat(self):
- infos = self.voici_mon_plan()
- if infos:
- vie, argent, nb_visites, plan = infos
- print(f"On peut tout tuer, avec {vie} points de vie et {argent} orins restants, et {nb_visites} visite(s) "
- f"chez le soigneur,avec une journée {plan}")
- else:
- print("fok")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement