tresor.py

Created by schraf

Created on September 09, 2018

838 Bytes

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")

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.