diff --git a/config.txt b/config.txt index ed23b45..8f1791e 100644 --- a/config.txt +++ b/config.txt @@ -6,12 +6,4 @@ OUTPUT_FILE=con PERFECT=True GENERATOR=DFS SOLVER=AStar -salut -# -# -# -# -# -# -# -## +SEED=168431 diff --git a/src/AMazeIng.py b/src/AMazeIng.py index 29cf16a..5688288 100644 --- a/src/AMazeIng.py +++ b/src/AMazeIng.py @@ -21,6 +21,7 @@ class AMazeIng(BaseModel): maze: Maze = Field(default=Maze(None)) generator: MazeGenerator solver: MazeSolver + seed: int | None = Field(default=None) @model_validator(mode="after") def check_entry_exit(self) -> Self: @@ -48,7 +49,9 @@ class AMazeIng(BaseModel): Yields: The current maze state after each generation step. """ - for array in self.generator.generator(self.height, self.width): + for array in self.generator.generator( + self.height, self.width, self.seed + ): self.maze.set_maze(array) yield self.maze return diff --git a/src/mazegen/MazeGenerator.py b/src/mazegen/MazeGenerator.py index 560cf67..9506bcf 100644 --- a/src/mazegen/MazeGenerator.py +++ b/src/mazegen/MazeGenerator.py @@ -369,7 +369,7 @@ class DepthFirstSearch(MazeGenerator): The final generated maze. """ if seed is not None: - np.random.seed(seed) + random.seed(seed) maze = self.init_maze(width, height) if width > 10 and height > 10: self.forty_two = self.get_cell_ft(width, height) diff --git a/src/parsing/Parsing.py b/src/parsing/Parsing.py index 6b4314a..38fcda6 100644 --- a/src/parsing/Parsing.py +++ b/src/parsing/Parsing.py @@ -62,14 +62,12 @@ class DataMaze: "GENERATOR", "SOLVER", } - set_key = {key for key in data.keys()} - if len(set_key) != len(key_test): - raise KeyError("Missing some data the len do not correspond") - res_key = {key for key in set_key if key not in key_test} - if len(res_key) != 0: - raise KeyError( - "Some Key " f"do not correspond the keys: {res_key}" - ) + i = 0 + for key in data: + if key in key_test: + i += 1 + if len(key_test) != i: + raise Exception("Some mandatory key not provide") @staticmethod def convert_values(data: dict[str, str]) -> dict[str, Any]: @@ -88,6 +86,10 @@ class DataMaze: res: dict[str, Any] = {} for key in key_int: res.update({key: int(data[key])}) + try: + res.update({"SEED": int(data["SEED"])}) + except KeyError: + pass for key in key_tuple: res.update({key: DataMaze.convert_tuple(data[key])}) for key in key_bool: