diff --git a/graphes/maze/fifo.py b/graphes/maze/fifo.py new file mode 100644 index 0000000..23e1149 --- /dev/null +++ b/graphes/maze/fifo.py @@ -0,0 +1,20 @@ +class Pile: + def __init__(self) -> None: + self.element = [] + + def empiler(self,element)->None: + self.element.append(element) + + def est_vide(self)->bool: + return len(self.element) == 0 + + def defiler(self): + assert not self.est_vide(), "La pile est vide" + return self.element.pop() + + def size(self)->int: + return len(self.element) + + def index(self, k): + assert not self.est_vide(), "La pile est vide" + return self.element[k] diff --git a/graphes/maze/lifo.py b/graphes/maze/lifo.py index 5445e7a..d9ec861 100644 --- a/graphes/maze/lifo.py +++ b/graphes/maze/lifo.py @@ -18,4 +18,3 @@ class Queue: def index(self, k): assert self.est_vide() , "La file est vide" return self.element[k] - diff --git a/graphes/maze/maze_creator.py b/graphes/maze/maze_creator.py new file mode 100644 index 0000000..32e69d5 --- /dev/null +++ b/graphes/maze/maze_creator.py @@ -0,0 +1,22 @@ +import fifo +import lifo + +class Labyrinth: + def __init__(self, rows, cols) -> None: + self.rows = rows + self.cols = cols + self.grid = [[1 for _ in range(cols)]for _ in range(rows)] + self.visited = [[False for _ in range(cols)]for _ in range(rows)] + self.stack = fifo.Pile() + self.queue = lifo.Queue() + self.start = None + self.end = None + + def __str__(self) -> str: + return "\n".join("".join(" " if cell == 0 else "#" for cell in row) for row in self.grid) + def set_start_end(self, start, end): + self.start = start + self.end = end + def generate_maze(self): + pass + diff --git a/graphes/maze/test.py b/graphes/maze/test.py new file mode 100644 index 0000000..5568002 --- /dev/null +++ b/graphes/maze/test.py @@ -0,0 +1,51 @@ +from fifo import Pile # Remplacez "fifo" par le nom exact de votre fichier contenant la classe Pile + +# Initialisation +pile = Pile() + +# Test de empiler +pile.empiler(5) +pile.empiler(10) +assert pile.size() == 2, "Erreur : La taille de la pile devrait être 2" +assert pile.element == [5, 10], "Erreur : Les éléments de la pile ne correspondent pas" + +# Test de est_vide +assert not pile.est_vide(), "Erreur : La pile ne devrait pas être vide" +pile.defiler() +pile.defiler() +assert pile.est_vide(), "Erreur : La pile devrait être vide après avoir défiler tous les éléments" + +# Test de defiler +pile.empiler(7) +pile.empiler(3) +assert pile.defiler() == 3, "Erreur : Le dernier élément défilé devrait être 3" +assert pile.defiler() == 7, "Erreur : Le dernier élément défilé devrait être 7" +try: + pile.defiler() + assert False, "Erreur : defiler devrait lever une exception pour une pile vide" +except AssertionError as e: + pass # Test réussi + +# Test de size +pile.empiler(4) +assert pile.size() == 1, "Erreur : La taille de la pile devrait être 1" +pile.defiler() +assert pile.size() == 0, "Erreur : La taille de la pile devrait être 0 après defiler" + +# Test de index +pile.empiler(1) +pile.empiler(2) +pile.empiler(3) +assert pile.index(0) == 1, "Erreur : L'élément à l'index 0 devrait être 1" +assert pile.index(2) == 3, "Erreur : L'élément à l'index 2 devrait être 3" +try: + pile.defiler() + pile.defiler() + pile.defiler() + pile.index(0) + assert False, "Erreur : index devrait lever une exception pour une pile vide" +except AssertionError as e: + pass # Test réussi + +print("Tous les tests sont passés avec succès !") +