Au pied d’un arbre, dans un petit coffre enterré, vous trouvez un parchemin avec le texte suivant :
“Pirate, pour arriver au trésor, tu devras faire 100 pas dans chacune de ces directions : ONNESEE”
Mais en faisant un schéma on se rend vite compte que pour arriver au trésor nous ne sommes pas obligés de faire tout le parcours indiqué mais seulement de faire 200 pas vers l’Est et 100 pas vers le Nord, soit EEN.
On vous demande d’écrire une fonction nommée tresor qui admet en paramètre le chemin indiqué sur le parchemin et qui en sortie vous donne le chemin le plus court pour y accéder.
def tresor(chemin): x=0 y=0 for c in chemin: x+=(c=="E")-(c=="O") y+=(c=="N")-(c=="S") final="E"*(x>0)*x + "O"*(x<0)*(-x) final+="N"*(y>0)*y + "S"*(y<0)*(-y) return "Chemin : "+final # Ex : tresor("NONSENS") donnera "N" # Version 2 en utilisant un dictionnaire def tresorv2(chemin): dr={"N":[0,1],"S":[0,-1],"E":[1,0],"O":[-1,0]} x,y = 0,0 final="" for c in chemin: x+=dr[c][0] y+=dr[c][1] if x>0: final+="E"*x if x<0: final+="O"*(-x) if y>0: final+="N"*y if y<0: final+="S"*(-y) return "Chemin : "+final # Version 3 Elimination des opposes def suppr(txt,c1,c2): while txt.find(c1)>-1 and txt.find(c2)>-1: txt = txt.replace(c1,"",1) txt = txt.replace(c2,"",1) return txt def tresorv3(chemin): sortie=suppr(chemin,"N","S") return suppr(sortie,"E","O")