2 Commits

Author SHA1 Message Date
Maoake Teriierooiterai ef030f70a7 finish to synchronize the maze generator and the solver 2026-03-26 14:19:43 +01:00
Maoake Teriierooiterai 170de8813a update the gitignore 2026-03-26 13:11:36 +01:00
5 changed files with 35 additions and 31 deletions
+1
View File
@@ -214,4 +214,5 @@ __marimo__/
# Streamlit # Streamlit
.streamlit/secrets.toml .streamlit/secrets.toml
test.txt
+3 -3
View File
@@ -1,6 +1,6 @@
WIDTH=20 WIDTH=11
HEIGHT=20 HEIGHT=11
ENTRY=1,1 ENTRY=4,3
EXIT=2,1 EXIT=2,1
OUTPUT_FILE=maze.txt OUTPUT_FILE=maze.txt
PERFECT=False PERFECT=False
+14 -4
View File
@@ -9,7 +9,7 @@ class MazeGenerator(ABC):
def __init__(self, start: tuple, end: tuple, perfect: bool) -> None: def __init__(self, start: tuple, end: tuple, perfect: bool) -> None:
self.start = (start[0] - 1, start[1] - 1) self.start = (start[0] - 1, start[1] - 1)
self.end = (end[0] - 1, end[1] - 1) self.end = (end[0] - 1, end[1] - 1)
self.bool = bool self.perfect = perfect
@abstractmethod @abstractmethod
def generator( def generator(
@@ -93,6 +93,7 @@ class MazeGenerator(ABC):
class Kruskal(MazeGenerator): class Kruskal(MazeGenerator):
class Set: class Set:
def __init__(self, cells: list[int]) -> None: def __init__(self, cells: list[int]) -> None:
self.cells: list[int] = cells self.cells: list[int] = cells
@@ -174,6 +175,8 @@ class Kruskal(MazeGenerator):
cells_ft = None cells_ft = None
if height > 10 and width > 10: if height > 10 and width > 10:
cells_ft = self.get_cell_ft(width, height) cells_ft = self.get_cell_ft(width, height)
if cells_ft and (self.start in cells_ft or self.end in cells_ft):
cells_ft = None
if seed is not None: if seed is not None:
np.random.seed(seed) np.random.seed(seed)
@@ -204,13 +207,20 @@ class Kruskal(MazeGenerator):
): ):
break break
print(f"nb sets: {len(sets.sets)}") print(f"nb sets: {len(sets.sets)}")
return self.walls_to_maze(walls, height, width) maze = self.walls_to_maze(walls, height, width)
if self.perfect is False:
gen = Kruskal.unperfect_maze(width, height, maze,
cells_ft)
for res in gen:
maze = res
yield maze
return maze
class DepthFirstSearch(MazeGenerator): class DepthFirstSearch(MazeGenerator):
def __init__(self, start: bool, end: bool, perfect: bool) -> None: def __init__(self, start: bool, end: bool, perfect: bool) -> None:
self.start = start self.start = (start[0] - 1, start[1] - 1)
self.end = end self.end = (end[0] - 1, end[1] - 1)
self.perfect = perfect self.perfect = perfect
self.forty_two: set | None = None self.forty_two: set | None = None
+2
View File
@@ -190,6 +190,8 @@ class DepthFirstSearchSolver(MazeSolver):
coord = self.next_cell(coord, next) coord = self.next_cell(coord, next)
for m in move: for m in move:
path_str += m path_str += m
if not path:
raise Exception("Path not found")
return path_str return path_str
@staticmethod @staticmethod
+15 -24
View File
@@ -1,24 +1,15 @@
B91795551793955513D3 BD1553D3913
AEC1413969686D396C52 C3AD54386AA
C392BA869694552C553A BAC5396C7AA
BC6AAAC1296957A917AA 82956C5396E
83968692C292956A816A A86D553AC53
AAC3C3843C28293AAC3A C295552C512
E83816ABC3E86AAA83C2 9283B9693AA
96AAA92C3C3C56AC6C3A AAAAC456AAA
A96AC2AF87AFFFA9152A AC2C553D2C2
843A96EFC5057FAC2D2A 83C3D3C3E96
C7AA853FFFAFFFC3C142 C454547C547
952AA9697FAFD5145692
C3AAE83C3FAFFFC153AA 4,3
96AC16C383A9515696AA 2,1
C3C7C552AAAC3C53C16A EENWWNNEEESESWSEESSEEESSSSWSWWNWNWWWNNWSSSESWWNWNNNENNNNNW
969555106829457A9416
856953AA946E953843C3
A93A906E85112BAE96BA
C6AAE81105684685292A
D56C546C4554554546C6
1,1
2,1
S