securite.py

Created by schraf

Created on January 24, 2019

1.21 KB

Sécurité routière

Les « 0 » ci-dessous représentent des éléments de véhicules, par exemple « 000 » est un véhicule de longueur 3 (un camion) et « 0 » une petite voiture.

route = "==000==0==00=000==00=0000===00=====000===00=000====0=0====00===="

Les « = » représentent la route et on imagine que les véhicules se déplacent vers la droite. Donc sur la route ci-dessus on a à gauche un camion et devant lui une petite voiture etc.

  • Créez une fonction vehic qui admet une route en paramètre et donne en retour le nombre total de véhicules (camions et voitures)
  • Créez une fonction voit qui donne uniquement le nombre de voitures (C’est-dire un véhicule de longueur inférieure à 3)
  • Un véhicule est en infraction lorsque sa distance avec celui qui le précède est de seulement 1 « = ». Créez une fonction radar qui compte combien il y a d’infractions sur la route.
  • Créez une fonction simple qui simplifie l’écriture de la route sous la forme : “cvvcvcvcvcvvv” qui signifie camion – voiture – voiture… ?

Explications en vidéo


route = "==000==0==00=000==00=0000===00=====000===00=000====0=0====00===="

def vehic(route):
  return len(list(filter(lambda v: v!="",route.split("="))))
  
# Version 2

def vehicv2(route):
  separ = route.split("=")
  nb = 0
  for v in separ:
    if v!="" : nb+=1
  return nb

# Version 3

def vehicv3(route):
  return len([v for v in route.split("=") if v!=""])

def voit(route):
    return len(list(filter(lambda v: 0<len(v)<3,route.split("="))))

# Version 2

def voitv2(route):
  separ = route.split("=")
  nb = 0
  for v in separ:
    if 0<len(v)<3 : nb+=1
    # ou encore v=="0" or v=="00"
  return nb
  
# Version 3

def voitv3(route):
  return len([v for v in route.split("=") if 0<len(v)<3])

  
def radar(route):
  return len(list(filter(lambda v: v=="=",route.split("0"))))
  
# Version 2 

def radarv2(route):
  dist=route.split("0")
  nb = 0
  for v in dist:
    if v=="=" : nb+=1
    # ou encore len(v)==1
  return nb
  
def simple(route):
  vehic=list(filter(lambda v: v!="",route.split("=")))
  return "".join(map(lambda v: "v" if len(v)<3 else "c", vehic))
  
# Version 2

def simplev2(route):
  vehic = [v for v in route.split("=") if len(v)>0]
  return "".join(["v" if len(v)<3 else "c" for v in vehic])