par sos-math(21) » lun. 9 mars 2020 19:57
Bonjour,
il faut que tu crées une liste liste_gares, une bonne fois pour toutes qui contiendra les couples (nom_gare,(latitude,longitude)).
Pour une gare de départ donnée, tu parcours la liste en calculant la distance entre la gare de départ et les gares de la liste .
Cela pourrait ressembler à cela (recherche du minimum naïf) :
Code : Tout sélectionner
def plus_proche((depart, (x_depart,y_depart)):
liste = [(nom_gare, (x,y)) for gare in liste_gares]
mini = 5000
gare_plus_proche = depart
for element in liste :
if element[0] != gare and distance(depart,element)<mini :
mini = distance(depart,element)
gare_plus_proche = element
return gare_plus_proche
Ou alors sûrement plus rapide car utilisant les fonction de tri natives de Python : tu dresses la liste des distances de la gare de départ et tu tries cette distance par ordre croissant.
Code : Tout sélectionner
def plus_proche(depart):
liste_distances= [(nom_gare, distance(gare,depart)) for gare in liste_gares if gare!=depart]
liste_triee = liste_distance.sort(key=lambda x: x[1])
return liste_triee[0]
Bonne continuation
Bonjour,
il faut que tu crées une liste liste_gares, une bonne fois pour toutes qui contiendra les couples (nom_gare,(latitude,longitude)).
Pour une gare de départ donnée, tu parcours la liste en calculant la distance entre la gare de départ et les gares de la liste .
Cela pourrait ressembler à cela (recherche du minimum naïf) :
[code] def plus_proche((depart, (x_depart,y_depart)):
liste = [(nom_gare, (x,y)) for gare in liste_gares]
mini = 5000
gare_plus_proche = depart
for element in liste :
if element[0] != gare and distance(depart,element)<mini :
mini = distance(depart,element)
gare_plus_proche = element
return gare_plus_proche
[/code]
Ou alors sûrement plus rapide car utilisant les fonction de tri natives de Python : tu dresses la liste des distances de la gare de départ et tu tries cette distance par ordre croissant.
[code] def plus_proche(depart):
liste_distances= [(nom_gare, distance(gare,depart)) for gare in liste_gares if gare!=depart]
liste_triee = liste_distance.sort(key=lambda x: x[1])
return liste_triee[0]
[/code]
Bonne continuation