From 6ed7fe8de1cb0b7bc3131c4869432d6c2f558b7f Mon Sep 17 00:00:00 2001 From: Gjorgji Noveski Date: Mon, 5 Jan 2026 01:42:42 +0100 Subject: [PATCH 1/3] Added assertion and infinite loop fix for maze environment --- reasoning_gym/games/maze.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/reasoning_gym/games/maze.py b/reasoning_gym/games/maze.py index dd89f890..490e89a6 100644 --- a/reasoning_gym/games/maze.py +++ b/reasoning_gym/games/maze.py @@ -35,6 +35,7 @@ def validate(self) -> None: assert self.max_dist >= self.min_dist, "max_dist must be >= min_dist" assert self.min_grid_size >= 2, "min_grid_size must be >= 2" assert self.max_grid_size >= self.min_grid_size, "max_grid_size must be >= min_grid_size" + assert self.min_grid_size - 2 >= self.min_dist, "min_grid_size - 2 must be >= min_dist" class MazeDataset(ProceduralDataset): @@ -152,11 +153,12 @@ def _generate_random_maze(self, rng: random.Random, size: int) -> list[list[str] def _random_floor_cell(self, rng: random.Random, grid: list[list[str]]) -> tuple[int, int]: """Pick a random path cell inside the maze (not the border).""" size = len(grid) - while True: + for _ in range(self.num_retries): r = rng.randint(1, size - 2) c = rng.randint(1, size - 2) if grid[r][c] == self.path_char: return (r, c) + raise RuntimeError(f"Could not find suitable path cell after {self.num_retries} attempts") def _bfs_shortest_path( self, grid: list[list[str]], start_r: int, start_c: int, goal_r: int, goal_c: int From da424498e4febe50af11a0688a6c5a80d8a6ba11 Mon Sep 17 00:00:00 2001 From: Gjorgji Noveski Date: Thu, 15 Jan 2026 22:34:14 +0100 Subject: [PATCH 2/3] Fixed maze grid size validation formula --- reasoning_gym/games/maze.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/reasoning_gym/games/maze.py b/reasoning_gym/games/maze.py index 490e89a6..4968171d 100644 --- a/reasoning_gym/games/maze.py +++ b/reasoning_gym/games/maze.py @@ -35,7 +35,9 @@ def validate(self) -> None: assert self.max_dist >= self.min_dist, "max_dist must be >= min_dist" assert self.min_grid_size >= 2, "min_grid_size must be >= 2" assert self.max_grid_size >= self.min_grid_size, "max_grid_size must be >= min_grid_size" - assert self.min_grid_size - 2 >= self.min_dist, "min_grid_size - 2 must be >= min_dist" + assert ( + 2 * (self.min_grid_size - 3) >= self.min_dist + ), "2 × (min_grid_size - 3) must be >= min_dist (maximum corner-to-corner distance accounting for walls and steps)" class MazeDataset(ProceduralDataset): From 353020c436b268d643fa451c30b76a8f017ad730 Mon Sep 17 00:00:00 2001 From: Gjorgji Noveski Date: Fri, 16 Jan 2026 09:50:55 +0100 Subject: [PATCH 3/3] Removed assertion check due not working for all maze configurations --- reasoning_gym/games/maze.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/reasoning_gym/games/maze.py b/reasoning_gym/games/maze.py index 4968171d..30ea938d 100644 --- a/reasoning_gym/games/maze.py +++ b/reasoning_gym/games/maze.py @@ -35,9 +35,6 @@ def validate(self) -> None: assert self.max_dist >= self.min_dist, "max_dist must be >= min_dist" assert self.min_grid_size >= 2, "min_grid_size must be >= 2" assert self.max_grid_size >= self.min_grid_size, "max_grid_size must be >= min_grid_size" - assert ( - 2 * (self.min_grid_size - 3) >= self.min_dist - ), "2 × (min_grid_size - 3) must be >= min_dist (maximum corner-to-corner distance accounting for walls and steps)" class MazeDataset(ProceduralDataset):