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… ?
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])