diff --git a/graphes/leaudibidon/Water_Jug.py b/graphes/leaudibidon/Water_Jug.py index e1a93e8..a7eba4e 100644 --- a/graphes/leaudibidon/Water_Jug.py +++ b/graphes/leaudibidon/Water_Jug.py @@ -1,6 +1,9 @@ #!/usr/bin/python3 # -*- Coding: utf-8 -*- +from typing import Deque + + class Graphe_Oriente(object): """ Classe des Graphes Orientés (GO). @@ -66,11 +69,16 @@ def construire_chemins(graphe, depart): :effet de bord: Aucun """ - result = { - depart: (0,None) - }# distance 0 et aucun truc avant - queue = [depart] + visited = set() + queue = Deque([depart]) + visited.add(depart) + while queue: + vertex = queue.popleft() + for neighbor in graphe[vertex]: + if neighbor not in visited: + visited.add(neighbor) + queue.append(neighbor) def reconstruire_chemin_vers(dico_chemins, *arrivee): @@ -83,7 +91,7 @@ def reconstruire_chemin_vers(dico_chemins, *arrivee): (si vide, on considère tous les sommets) :return resultat list: liste des chemins ie des listes de sommets traversés """ - pass + def affichage_chemin(chemin): """ diff --git a/graphes/leaudibidon/correction.py b/graphes/leaudibidon/correction.py new file mode 100644 index 0000000..fb450ee --- /dev/null +++ b/graphes/leaudibidon/correction.py @@ -0,0 +1,22 @@ +def produit_cartesien(*listes): + if not listes: + return [] + if len(listes) == 1: + return listes[0] + if len(listes) == 2: + liste1, liste2 = listes + resultat = list() + for tuple_1 in liste1: + for tuple_2 in liste2: + resultat.append(tuple_1 + tuple_2) + return resultat + liste1, *reste = listes + return produit_cartesien(liste1, produit_cartesien(*reste)) + + + +liste1 = [(_,) for _ in range(3)] +liste2 = [(_,) for _ in range(5)] +liste3 = [(_,)for _ in range(8)] +print(produit_cartesien(liste1,liste2)) + diff --git a/graphes/leaudibidon/test.py b/graphes/leaudibidon/test.py deleted file mode 100644 index f0bc12d..0000000 --- a/graphes/leaudibidon/test.py +++ /dev/null @@ -1,5 +0,0 @@ -def produit_cartesien(*listes): - if listes == None: - return [] - if len(listes) == 1: - return listes[0]