En fait je n'ai pas lu les pages :p
je suis parti sur un truc un peu perso du genre en python3:
from urllib.request import urlopen
# Fonction qui regarde la ville la plus proche en temps
def Tri(Depart, VillesVisitees):
x = []
for Ville, Values in BigDico[Depart].items():
if Ville not in VillesVisitees:
x.append((int(Values[1]), Values[0], Ville))
x.sort()
return(x[0][2])
# Villes à visiter
Villes = ["Rouen", "Paris", "Rennes", "Lyon", "Strasbourg"] # Liste des villes
VillesVisitees = ["Rouen"] # Ville de départ
# Dictionnaire qui contiendra les infos
BigDico = {}
# 1ere boucle travaillant sur les villes
for Depart in Villes:
# Ajoute la ville à la liste
BigDico[Depart] = {}
# 2e boucle traitant les villes
for Arrive in Villes:
# Si les 2 villes sont les mêmes, on saute ce calcul
if Depart == Arrive:
continue
# On ajoute la nouvelle destination à la ville de départ
BigDico[Depart][Arrive] = []
# On ajoute les infos sur le trajet
for Ligne in urlopen("https://maps.googleapis.com/maps/api/distancematrix/json?origins={}&destinations={}&language=fr".format(Depart, Arrive)).read().decode('UTF-8').split("\n"):
if '"value" :' in Ligne:
BigDico[Depart][Arrive].append(Ligne.split(' : ')[1])
# Tri les temps d'acces par ordre
Trajet = [Villes[0]]
VillesVisitees.append(Villes[0])
NextVille = Tri(Villes[0], VillesVisitees)
Trajet.append(NextVille)
while len(Villes) != len(VillesVisitees):
VillesVisitees.append(NextVille)
NextVille = Tri(NextVille, VillesVisitees)
Trajet.append(NextVille)
ça donne ça :
['Rouen', 'Paris', 'Rennes', 'Lyon', 'Strasbourg']
et ça semble en effet être à chaque fois le trajet le plus rapide...
Après il y a surement une meilleur logique...
Pour travailler sur la distance au lieu du temps, il suffit de changer ça :
def Tri(Depart, VillesVisitees):
x = []
for Ville, Values in BigDico[Depart].items():
if Ville not in VillesVisitees:
x.append((int(Values[1]), Values[0], Ville))
x.sort()
return(x[0][2])
en
def Tri(Depart, VillesVisitees):
x = []
for Ville, Values in BigDico[Depart].items():
if Ville not in VillesVisitees:
x.append((int(Values[0]), Values[1], Ville))
x.sort()
return(x[0][2])