docs for maze-dataset v1.3.2
View Source on GitHub

maze_dataset.testing_utils

Shared utilities for tests only.

Do not import into any module outside of the tests directory


  1"""Shared utilities for tests only.
  2
  3Do not import into any module outside of the tests directory
  4"""
  5
  6import itertools
  7from typing import Final, NamedTuple, Sequence
  8
  9import frozendict
 10import numpy as np
 11
 12from maze_dataset import (
 13	CoordArray,
 14	LatticeMaze,
 15	LatticeMazeGenerators,
 16	MazeDataset,
 17	MazeDatasetConfig,
 18	SolvedMaze,
 19	TargetedLatticeMaze,
 20)
 21from maze_dataset.tokenization import (
 22	MazeTokenizer,
 23	MazeTokenizerModular,
 24	TokenizationMode,
 25)
 26
 27GRID_N: Final[int] = 5
 28N_MAZES: Final[int] = 5
 29CFG: Final[MazeDatasetConfig] = MazeDatasetConfig(
 30	name="test",
 31	grid_n=GRID_N,
 32	n_mazes=N_MAZES,
 33	maze_ctor=LatticeMazeGenerators.gen_dfs,
 34)
 35MAZE_DATASET: Final[MazeDataset] = MazeDataset.from_config(
 36	CFG,
 37	do_download=False,
 38	load_local=False,
 39	do_generate=True,
 40	save_local=False,
 41	verbose=True,
 42	gen_parallel=False,
 43)
 44LATTICE_MAZES: Final[tuple[LatticeMaze, ...]] = tuple(
 45	LatticeMazeGenerators.gen_dfs(np.array([GRID_N, GRID_N])) for _ in range(N_MAZES)
 46)
 47_PATHS = tuple(maze.generate_random_path() for maze in LATTICE_MAZES)
 48TARGETED_MAZES: Final[tuple[TargetedLatticeMaze, ...]] = tuple(
 49	TargetedLatticeMaze.from_lattice_maze(maze, path[0], path[-1])
 50	for maze, path in zip(LATTICE_MAZES, _PATHS, strict=False)
 51)
 52# MIXED_MAZES alternates the maze types, so you can slice a contiguous subset and still get all types
 53MIXED_MAZES: Final[tuple[LatticeMaze | TargetedLatticeMaze | SolvedMaze, ...]] = tuple(
 54	x
 55	for x in itertools.chain.from_iterable(
 56		itertools.zip_longest(MAZE_DATASET.mazes, TARGETED_MAZES, LATTICE_MAZES),
 57	)
 58)
 59
 60
 61class MANUAL_MAZE(NamedTuple):  # noqa: N801
 62	"""A named tuple for manual maze definitions"""
 63
 64	tokens: str
 65	ascii: Sequence[str]
 66	straightaway_footprints: CoordArray
 67
 68
 69ASCII_MAZES: Final[frozendict.frozendict[str, MANUAL_MAZE]] = frozendict.frozendict(
 70	small_3x3=MANUAL_MAZE(
 71		tokens="<ADJLIST_START> (2,0) <--> (2,1) ; (0,0) <--> (0,1) ; (0,0) <--> (1,0) ; (0,2) <--> (1,2) ; (1,0) <--> (2,0) ; (0,2) <--> (0,1) ; (2,2) <--> (2,1) ; (1,1) <--> (2,1) ; <ADJLIST_END> <ORIGIN_START> (0,0) <ORIGIN_END> <TARGET_START> (2,1) <TARGET_END> <PATH_START> (0,0) (1,0) (2,0) (2,1) <PATH_END>",
 72		ascii=(
 73			"#######",
 74			"#S    #",
 75			"#X### #",
 76			"#X# # #",
 77			"#X# ###",
 78			"#XXE  #",
 79			"#######",
 80		),
 81		straightaway_footprints=np.array(
 82			[
 83				[0, 0],
 84				[2, 0],
 85				[2, 1],
 86			],
 87		),
 88	),
 89	big_10x10=MANUAL_MAZE(
 90		tokens="<ADJLIST_START> (8,2) <--> (8,3) ; (3,7) <--> (3,6) ; (6,7) <--> (6,8) ; (4,6) <--> (5,6) ; (9,5) <--> (9,4) ; (3,3) <--> (3,4) ; (5,1) <--> (4,1) ; (2,6) <--> (2,7) ; (8,5) <--> (8,4) ; (1,9) <--> (2,9) ; (4,1) <--> (4,2) ; (0,8) <--> (0,7) ; (5,4) <--> (5,3) ; (6,3) <--> (6,4) ; (5,0) <--> (4,0) ; (5,3) <--> (5,2) ; (3,1) <--> (2,1) ; (9,1) <--> (9,0) ; (3,5) <--> (3,6) ; (5,5) <--> (6,5) ; (7,1) <--> (7,2) ; (0,1) <--> (1,1) ; (7,8) <--> (8,8) ; (3,9) <--> (4,9) ; (4,6) <--> (4,7) ; (0,6) <--> (0,7) ; (3,4) <--> (3,5) ; (6,0) <--> (5,0) ; (7,7) <--> (7,6) ; (1,6) <--> (0,6) ; (6,1) <--> (6,0) ; (8,6) <--> (8,7) ; (9,9) <--> (9,8) ; (1,8) <--> (1,9) ; (2,1) <--> (2,2) ; (9,2) <--> (9,3) ; (5,9) <--> (6,9) ; (3,2) <--> (2,2) ; (0,8) <--> (0,9) ; (5,6) <--> (5,7) ; (2,3) <--> (2,4) ; (4,5) <--> (4,4) ; (8,9) <--> (8,8) ; (9,6) <--> (8,6) ; (3,7) <--> (3,8) ; (8,0) <--> (7,0) ; (6,1) <--> (6,2) ; (0,1) <--> (0,0) ; (7,3) <--> (7,4) ; (9,4) <--> (9,3) ; (9,6) <--> (9,5) ; (8,7) <--> (7,7) ; (5,2) <--> (5,1) ; (0,0) <--> (1,0) ; (7,2) <--> (7,3) ; (2,5) <--> (2,6) ; (4,9) <--> (5,9) ; (5,5) <--> (5,4) ; (5,6) <--> (6,6) ; (7,8) <--> (7,9) ; (1,7) <--> (2,7) ; (4,6) <--> (4,5) ; (1,1) <--> (1,2) ; (3,1) <--> (3,0) ; (1,5) <--> (1,6) ; (8,3) <--> (8,4) ; (9,9) <--> (8,9) ; (8,5) <--> (7,5) ; (1,4) <--> (2,4) ; (3,0) <--> (4,0) ; (3,3) <--> (4,3) ; (6,9) <--> (6,8) ; (1,0) <--> (2,0) ; (6,0) <--> (7,0) ; (8,0) <--> (9,0) ; (2,3) <--> (2,2) ; (2,8) <--> (3,8) ; (5,7) <--> (6,7) ; (1,3) <--> (0,3) ; (9,7) <--> (9,8) ; (7,5) <--> (7,4) ; (1,8) <--> (2,8) ; (6,5) <--> (6,4) ; (0,2) <--> (1,2) ; (0,7) <--> (1,7) ; (0,3) <--> (0,2) ; (4,3) <--> (4,2) ; (5,8) <--> (4,8) ; (9,1) <--> (8,1) ; (9,2) <--> (8,2) ; (1,3) <--> (1,4) ; (2,9) <--> (3,9) ; (4,8) <--> (4,7) ; (0,5) <--> (0,4) ; (8,1) <--> (7,1) ; (0,3) <--> (0,4) ; (9,7) <--> (9,6) ; (7,6) <--> (6,6) ; (1,5) <--> (0,5) ; <ADJLIST_END> <ORIGIN_START> (6,2) <ORIGIN_END> <TARGET_START> (2,1) <TARGET_END> <PATH_START> (6,2) (6,1) (6,0) (5,0) (4,0) (3,0) (3,1) (2,1) <PATH_END>",
 91		ascii=(
 92			"#####################",
 93			"#   #       #       #",
 94			"# # # # ### # # #####",
 95			"# #   #   #   # #   #",
 96			"# ####### ##### # # #",
 97			"# #E      #     # # #",
 98			"###X# ########### # #",
 99			"#XXX# #           # #",
100			"#X##### ########### #",
101			"#X#     #         # #",
102			"#X# ######### ### # #",
103			"#X#         #   # # #",
104			"#X######### # # ### #",
105			"#XXXXS#     # #     #",
106			"# ########### #######",
107			"# #         #   #   #",
108			"# # ####### ### # ###",
109			"# # #       #   #   #",
110			"# # # ####### ##### #",
111			"#   #               #",
112			"#####################",
113		),
114		straightaway_footprints=np.array(
115			[
116				[6, 2],
117				[6, 0],
118				[3, 0],
119				[3, 1],
120				[2, 1],
121			],
122		),
123	),
124	longer_10x10=MANUAL_MAZE(
125		tokens="<ADJLIST_START> (8,2) <--> (8,3) ; (3,7) <--> (3,6) ; (6,7) <--> (6,8) ; (4,6) <--> (5,6) ; (9,5) <--> (9,4) ; (3,3) <--> (3,4) ; (5,1) <--> (4,1) ; (2,6) <--> (2,7) ; (8,5) <--> (8,4) ; (1,9) <--> (2,9) ; (4,1) <--> (4,2) ; (0,8) <--> (0,7) ; (5,4) <--> (5,3) ; (6,3) <--> (6,4) ; (5,0) <--> (4,0) ; (5,3) <--> (5,2) ; (3,1) <--> (2,1) ; (9,1) <--> (9,0) ; (3,5) <--> (3,6) ; (5,5) <--> (6,5) ; (7,1) <--> (7,2) ; (0,1) <--> (1,1) ; (7,8) <--> (8,8) ; (3,9) <--> (4,9) ; (4,6) <--> (4,7) ; (0,6) <--> (0,7) ; (3,4) <--> (3,5) ; (6,0) <--> (5,0) ; (7,7) <--> (7,6) ; (1,6) <--> (0,6) ; (6,1) <--> (6,0) ; (8,6) <--> (8,7) ; (9,9) <--> (9,8) ; (1,8) <--> (1,9) ; (2,1) <--> (2,2) ; (9,2) <--> (9,3) ; (5,9) <--> (6,9) ; (3,2) <--> (2,2) ; (0,8) <--> (0,9) ; (5,6) <--> (5,7) ; (2,3) <--> (2,4) ; (4,5) <--> (4,4) ; (8,9) <--> (8,8) ; (9,6) <--> (8,6) ; (3,7) <--> (3,8) ; (8,0) <--> (7,0) ; (6,1) <--> (6,2) ; (0,1) <--> (0,0) ; (7,3) <--> (7,4) ; (9,4) <--> (9,3) ; (9,6) <--> (9,5) ; (8,7) <--> (7,7) ; (5,2) <--> (5,1) ; (0,0) <--> (1,0) ; (7,2) <--> (7,3) ; (2,5) <--> (2,6) ; (4,9) <--> (5,9) ; (5,5) <--> (5,4) ; (5,6) <--> (6,6) ; (7,8) <--> (7,9) ; (1,7) <--> (2,7) ; (4,6) <--> (4,5) ; (1,1) <--> (1,2) ; (3,1) <--> (3,0) ; (1,5) <--> (1,6) ; (8,3) <--> (8,4) ; (9,9) <--> (8,9) ; (8,5) <--> (7,5) ; (1,4) <--> (2,4) ; (3,0) <--> (4,0) ; (3,3) <--> (4,3) ; (6,9) <--> (6,8) ; (1,0) <--> (2,0) ; (6,0) <--> (7,0) ; (8,0) <--> (9,0) ; (2,3) <--> (2,2) ; (2,8) <--> (3,8) ; (5,7) <--> (6,7) ; (1,3) <--> (0,3) ; (9,7) <--> (9,8) ; (7,5) <--> (7,4) ; (1,8) <--> (2,8) ; (6,5) <--> (6,4) ; (0,2) <--> (1,2) ; (0,7) <--> (1,7) ; (0,3) <--> (0,2) ; (4,3) <--> (4,2) ; (5,8) <--> (4,8) ; (9,1) <--> (8,1) ; (9,2) <--> (8,2) ; (1,3) <--> (1,4) ; (2,9) <--> (3,9) ; (4,8) <--> (4,7) ; (0,5) <--> (0,4) ; (8,1) <--> (7,1) ; (0,3) <--> (0,4) ; (9,7) <--> (9,6) ; (7,6) <--> (6,6) ; (1,5) <--> (0,5) ; <ADJLIST_END> <ORIGIN_START> (6,2) <ORIGIN_END> <TARGET_START> (2,1) <TARGET_END> <PATH_START> (6,2) (6,1) (6,0) (5,0) (4,0) (3,0) (3,1) (2,1) (2,2) (2,3) (2,4) (1,4) (1,3) (0,3) (0,4) (0,5) (1,5) (1,6) (0,6) (0,7) (0,8) <PATH_END>",
126		ascii=(
127			"#####################",
128			"#   #  XXXXX#XXXXE  #",
129			"# # # #X###X#X# #####",
130			"# #   #XXX#XXX# #   #",
131			"# #######X##### # # #",
132			"# #XXXXXXX#     # # #",
133			"###X# ########### # #",
134			"#XXX# #           # #",
135			"#X##### ########### #",
136			"#X#     #         # #",
137			"#X# ######### ### # #",
138			"#X#         #   # # #",
139			"#X######### # # ### #",
140			"#XXXXS#     # #     #",
141			"# ########### #######",
142			"# #         #   #   #",
143			"# # ####### ### # ###",
144			"# # #       #   #   #",
145			"# # # ####### ##### #",
146			"#   #               #",
147			"#####################",
148		),
149		straightaway_footprints=np.array(
150			[
151				[6, 2],
152				[6, 0],
153				[3, 0],
154				[3, 1],
155				[2, 1],
156				[2, 4],
157				[1, 4],
158				[1, 3],
159				[0, 3],
160				[0, 5],
161				[1, 5],
162				[1, 6],
163				[0, 6],
164				[0, 8],
165			],
166		),
167	),
168)
169
170# A list of legacy `MazeTokenizer`s and their `MazeTokenizerModular` equivalents.
171# Used for unit tests where both versions are supported
172LEGACY_AND_EQUIVALENT_TOKENIZERS: list[MazeTokenizer | MazeTokenizerModular] = [
173	*[
174		MazeTokenizer(tokenization_mode=tok_mode, max_grid_size=20)
175		for tok_mode in TokenizationMode
176	],
177	*[MazeTokenizerModular.from_legacy(tok_mode) for tok_mode in TokenizationMode],
178]

GRID_N: Final[int] = 5
N_MAZES: Final[int] = 5
CFG: Final[maze_dataset.MazeDatasetConfig] = MazeDatasetConfig(name='test', seq_len_min=1, seq_len_max=512, seed=42, applied_filters=[], grid_n=5, n_mazes=5, maze_ctor=<function LatticeMazeGenerators.gen_dfs>, maze_ctor_kwargs={}, endpoint_kwargs={}, _fname_loaded=None)
MAZE_DATASET: Final[maze_dataset.MazeDataset] = <maze_dataset.MazeDataset object>
LATTICE_MAZES: Final[tuple[maze_dataset.LatticeMaze, ...]] = (LatticeMaze(connection_list=array([[[ True, True, True, True, False], [ True, False, True, False, True], [ True, False, False, True, True], [False, False, True, True, True], [False, False, False, False, False]], [[ True, False, True, True, False], [False, False, False, True, False], [ True, True, False, False, False], [ True, True, False, False, False], [ True, True, False, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([2, 3]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}), LatticeMaze(connection_list=array([[[ True, False, False, True, True], [ True, False, True, True, True], [False, True, True, False, True], [ True, False, True, True, False], [False, False, False, False, False]], [[ True, False, True, False, False], [ True, True, False, False, False], [ True, False, False, True, False], [ True, False, False, True, False], [ True, False, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([0, 2]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}), LatticeMaze(connection_list=array([[[False, False, True, True, True], [ True, False, False, False, True], [False, False, False, False, True], [ True, True, True, False, False], [False, False, False, False, False]], [[ True, True, True, False, False], [ True, True, False, True, False], [ True, True, True, False, False], [ True, False, True, True, False], [False, True, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([2, 3]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}), LatticeMaze(connection_list=array([[[False, True, True, True, True], [ True, True, True, False, True], [ True, False, False, True, True], [False, False, False, False, True], [False, False, False, False, False]], [[ True, False, True, False, False], [False, False, False, True, False], [ True, False, True, False, False], [ True, True, True, False, False], [ True, True, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([0, 0]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}), LatticeMaze(connection_list=array([[[ True, False, False, False, True], [False, True, True, True, False], [ True, False, True, False, True], [ True, True, False, True, True], [False, False, False, False, False]], [[ True, True, True, True, False], [ True, False, False, True, False], [False, False, True, False, False], [False, True, False, True, False], [ True, True, True, False, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([2, 1]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}))
TARGETED_MAZES: Final[tuple[maze_dataset.TargetedLatticeMaze, ...]] = (TargetedLatticeMaze(connection_list=array([[[ True, True, True, True, False], [ True, False, True, False, True], [ True, False, False, True, True], [False, False, True, True, True], [False, False, False, False, False]], [[ True, False, True, True, False], [False, False, False, True, False], [ True, True, False, False, False], [ True, True, False, False, False], [ True, True, False, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([2, 3]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}, start_pos=array([2, 4]), end_pos=array([3, 0])), TargetedLatticeMaze(connection_list=array([[[ True, False, False, True, True], [ True, False, True, True, True], [False, True, True, False, True], [ True, False, True, True, False], [False, False, False, False, False]], [[ True, False, True, False, False], [ True, True, False, False, False], [ True, False, False, True, False], [ True, False, False, True, False], [ True, False, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([0, 2]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}, start_pos=array([0, 0]), end_pos=array([1, 0])), TargetedLatticeMaze(connection_list=array([[[False, False, True, True, True], [ True, False, False, False, True], [False, False, False, False, True], [ True, True, True, False, False], [False, False, False, False, False]], [[ True, True, True, False, False], [ True, True, False, True, False], [ True, True, True, False, False], [ True, False, True, True, False], [False, True, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([2, 3]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}, start_pos=array([0, 0]), end_pos=array([4, 0])), TargetedLatticeMaze(connection_list=array([[[False, True, True, True, True], [ True, True, True, False, True], [ True, False, False, True, True], [False, False, False, False, True], [False, False, False, False, False]], [[ True, False, True, False, False], [False, False, False, True, False], [ True, False, True, False, False], [ True, True, True, False, False], [ True, True, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([0, 0]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}, start_pos=array([3, 2]), end_pos=array([3, 4])), TargetedLatticeMaze(connection_list=array([[[ True, False, False, False, True], [False, True, True, True, False], [ True, False, True, False, True], [ True, True, False, True, True], [False, False, False, False, False]], [[ True, True, True, True, False], [ True, False, False, True, False], [False, False, True, False, False], [False, True, False, True, False], [ True, True, True, False, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([2, 1]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}, start_pos=array([0, 3]), end_pos=array([2, 3])))
MIXED_MAZES: Final[tuple[maze_dataset.LatticeMaze | maze_dataset.TargetedLatticeMaze | maze_dataset.SolvedMaze, ...]] = (SolvedMaze(connection_list=array([[[ True, False, True, True, True], [False, False, True, False, False], [ True, False, True, False, True], [ True, False, False, False, True], [False, False, False, False, False]], [[ True, True, True, False, False], [ True, False, False, True, False], [ True, True, False, True, False], [False, True, True, False, False], [ True, True, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([2, 3]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}, start_pos=array([1, 3]), end_pos=array([2, 3]), solution=array([[1, 3], [0, 3], [0, 2], [1, 2], [2, 2], [2, 1], [2, 0], [3, 0], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [3, 4], [2, 4], [2, 3]])), TargetedLatticeMaze(connection_list=array([[[ True, True, True, True, False], [ True, False, True, False, True], [ True, False, False, True, True], [False, False, True, True, True], [False, False, False, False, False]], [[ True, False, True, True, False], [False, False, False, True, False], [ True, True, False, False, False], [ True, True, False, False, False], [ True, True, False, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([2, 3]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}, start_pos=array([2, 4]), end_pos=array([3, 0])), LatticeMaze(connection_list=array([[[ True, True, True, True, False], [ True, False, True, False, True], [ True, False, False, True, True], [False, False, True, True, True], [False, False, False, False, False]], [[ True, False, True, True, False], [False, False, False, True, False], [ True, True, False, False, False], [ True, True, False, False, False], [ True, True, False, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([2, 3]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}), SolvedMaze(connection_list=array([[[ True, True, True, False, True], [ True, False, False, False, True], [ True, True, True, True, False], [ True, True, False, False, True], [False, False, False, False, False]], [[ True, False, True, False, False], [False, False, True, True, False], [ True, True, False, True, False], [False, False, False, True, False], [False, True, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([0, 3]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}, start_pos=array([3, 4]), end_pos=array([2, 0]), solution=array([[3, 4], [4, 4], [4, 3], [4, 2], [4, 1], [3, 1], [2, 1], [2, 0]])), TargetedLatticeMaze(connection_list=array([[[ True, False, False, True, True], [ True, False, True, True, True], [False, True, True, False, True], [ True, False, True, True, False], [False, False, False, False, False]], [[ True, False, True, False, False], [ True, True, False, False, False], [ True, False, False, True, False], [ True, False, False, True, False], [ True, False, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([0, 2]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}, start_pos=array([0, 0]), end_pos=array([1, 0])), LatticeMaze(connection_list=array([[[ True, False, False, True, True], [ True, False, True, True, True], [False, True, True, False, True], [ True, False, True, True, False], [False, False, False, False, False]], [[ True, False, True, False, False], [ True, True, False, False, False], [ True, False, False, True, False], [ True, False, False, True, False], [ True, False, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([0, 2]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}), SolvedMaze(connection_list=array([[[ True, False, False, True, True], [False, False, True, False, True], [ True, True, False, True, True], [ True, True, False, True, True], [False, False, False, False, False]], [[ True, False, True, True, False], [ True, True, False, False, False], [False, True, False, True, False], [False, False, True, False, False], [ True, True, True, False, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([0, 1]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}, start_pos=array([0, 0]), end_pos=array([3, 3]), solution=array([[0, 0], [1, 0], [1, 1], [1, 2], [2, 2], [2, 1], [3, 1], [4, 1], [4, 2], [4, 3], [3, 3]])), TargetedLatticeMaze(connection_list=array([[[False, False, True, True, True], [ True, False, False, False, True], [False, False, False, False, True], [ True, True, True, False, False], [False, False, False, False, False]], [[ True, True, True, False, False], [ True, True, False, True, False], [ True, True, True, False, False], [ True, False, True, True, False], [False, True, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([2, 3]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}, start_pos=array([0, 0]), end_pos=array([4, 0])), LatticeMaze(connection_list=array([[[False, False, True, True, True], [ True, False, False, False, True], [False, False, False, False, True], [ True, True, True, False, False], [False, False, False, False, False]], [[ True, True, True, False, False], [ True, True, False, True, False], [ True, True, True, False, False], [ True, False, True, True, False], [False, True, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([2, 3]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}), SolvedMaze(connection_list=array([[[ True, False, True, False, False], [ True, True, True, False, True], [ True, True, False, True, False], [ True, True, True, False, True], [False, False, False, False, False]], [[ True, True, True, True, False], [ True, False, False, True, False], [False, False, False, True, False], [False, False, True, False, False], [False, True, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([1, 3]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}, start_pos=array([0, 1]), end_pos=array([1, 0]), solution=array([[0, 1], [0, 0], [1, 0]])), TargetedLatticeMaze(connection_list=array([[[False, True, True, True, True], [ True, True, True, False, True], [ True, False, False, True, True], [False, False, False, False, True], [False, False, False, False, False]], [[ True, False, True, False, False], [False, False, False, True, False], [ True, False, True, False, False], [ True, True, True, False, False], [ True, True, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([0, 0]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}, start_pos=array([3, 2]), end_pos=array([3, 4])), LatticeMaze(connection_list=array([[[False, True, True, True, True], [ True, True, True, False, True], [ True, False, False, True, True], [False, False, False, False, True], [False, False, False, False, False]], [[ True, False, True, False, False], [False, False, False, True, False], [ True, False, True, False, False], [ True, True, True, False, False], [ True, True, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([0, 0]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}), SolvedMaze(connection_list=array([[[ True, False, False, False, True], [ True, True, True, False, True], [False, True, True, True, False], [ True, True, False, False, True], [False, False, False, False, False]], [[ True, True, True, True, False], [False, True, True, False, False], [False, False, False, True, False], [False, False, True, False, False], [ True, True, True, True, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([2, 0]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}, start_pos=array([2, 2]), end_pos=array([1, 0]), solution=array([[2, 2], [3, 2], [3, 3], [2, 3], [2, 4], [1, 4], [0, 4], [0, 3], [0, 2], [0, 1], [0, 0], [1, 0]])), TargetedLatticeMaze(connection_list=array([[[ True, False, False, False, True], [False, True, True, True, False], [ True, False, True, False, True], [ True, True, False, True, True], [False, False, False, False, False]], [[ True, True, True, True, False], [ True, False, False, True, False], [False, False, True, False, False], [False, True, False, True, False], [ True, True, True, False, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([2, 1]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}, start_pos=array([0, 3]), end_pos=array([2, 3])), LatticeMaze(connection_list=array([[[ True, False, False, False, True], [False, True, True, True, False], [ True, False, True, False, True], [ True, True, False, True, True], [False, False, False, False, False]], [[ True, True, True, True, False], [ True, False, False, True, False], [False, False, True, False, False], [False, True, False, True, False], [ True, True, True, False, False]]]), generation_meta={'func_name': 'gen_dfs', 'grid_shape': array([5, 5]), 'start_coord': array([2, 1]), 'n_accessible_cells': 25, 'max_tree_depth': 50, 'fully_connected': True, 'visited_cells': {(4, 0), (3, 4), (4, 3), (3, 1), (0, 2), (2, 2), (1, 0), (1, 3), (4, 2), (3, 0), (3, 3), (0, 1), (2, 4), (1, 2), (0, 4), (2, 1), (3, 2), (4, 1), (4, 4), (0, 0), (1, 1), (0, 3), (2, 0), (1, 4), (2, 3)}}))
class MANUAL_MAZE(typing.NamedTuple):
62class MANUAL_MAZE(NamedTuple):  # noqa: N801
63	"""A named tuple for manual maze definitions"""
64
65	tokens: str
66	ascii: Sequence[str]
67	straightaway_footprints: CoordArray

A named tuple for manual maze definitions

MANUAL_MAZE( tokens: str, ascii: Sequence[str], straightaway_footprints: jaxtyping.Int8[ndarray, 'coord row_col=2'])

Create new instance of MANUAL_MAZE(tokens, ascii, straightaway_footprints)

tokens: str

Alias for field number 0

ascii: Sequence[str]

Alias for field number 1

straightaway_footprints: jaxtyping.Int8[ndarray, 'coord row_col=2']

Alias for field number 2

Inherited Members
builtins.tuple
index
count
ASCII_MAZES: Final[frozendict.frozendict[str, MANUAL_MAZE]] = frozendict.frozendict({'small_3x3': MANUAL_MAZE(tokens='<ADJLIST_START> (2,0) <--> (2,1) ; (0,0) <--> (0,1) ; (0,0) <--> (1,0) ; (0,2) <--> (1,2) ; (1,0) <--> (2,0) ; (0,2) <--> (0,1) ; (2,2) <--> (2,1) ; (1,1) <--> (2,1) ; <ADJLIST_END> <ORIGIN_START> (0,0) <ORIGIN_END> <TARGET_START> (2,1) <TARGET_END> <PATH_START> (0,0) (1,0) (2,0) (2,1) <PATH_END>', ascii=('#######', '#S #', '#X### #', '#X# # #', '#X# ###', '#XXE #', '#######'), straightaway_footprints=array([[0, 0], [2, 0], [2, 1]])), 'big_10x10': MANUAL_MAZE(tokens='<ADJLIST_START> (8,2) <--> (8,3) ; (3,7) <--> (3,6) ; (6,7) <--> (6,8) ; (4,6) <--> (5,6) ; (9,5) <--> (9,4) ; (3,3) <--> (3,4) ; (5,1) <--> (4,1) ; (2,6) <--> (2,7) ; (8,5) <--> (8,4) ; (1,9) <--> (2,9) ; (4,1) <--> (4,2) ; (0,8) <--> (0,7) ; (5,4) <--> (5,3) ; (6,3) <--> (6,4) ; (5,0) <--> (4,0) ; (5,3) <--> (5,2) ; (3,1) <--> (2,1) ; (9,1) <--> (9,0) ; (3,5) <--> (3,6) ; (5,5) <--> (6,5) ; (7,1) <--> (7,2) ; (0,1) <--> (1,1) ; (7,8) <--> (8,8) ; (3,9) <--> (4,9) ; (4,6) <--> (4,7) ; (0,6) <--> (0,7) ; (3,4) <--> (3,5) ; (6,0) <--> (5,0) ; (7,7) <--> (7,6) ; (1,6) <--> (0,6) ; (6,1) <--> (6,0) ; (8,6) <--> (8,7) ; (9,9) <--> (9,8) ; (1,8) <--> (1,9) ; (2,1) <--> (2,2) ; (9,2) <--> (9,3) ; (5,9) <--> (6,9) ; (3,2) <--> (2,2) ; (0,8) <--> (0,9) ; (5,6) <--> (5,7) ; (2,3) <--> (2,4) ; (4,5) <--> (4,4) ; (8,9) <--> (8,8) ; (9,6) <--> (8,6) ; (3,7) <--> (3,8) ; (8,0) <--> (7,0) ; (6,1) <--> (6,2) ; (0,1) <--> (0,0) ; (7,3) <--> (7,4) ; (9,4) <--> (9,3) ; (9,6) <--> (9,5) ; (8,7) <--> (7,7) ; (5,2) <--> (5,1) ; (0,0) <--> (1,0) ; (7,2) <--> (7,3) ; (2,5) <--> (2,6) ; (4,9) <--> (5,9) ; (5,5) <--> (5,4) ; (5,6) <--> (6,6) ; (7,8) <--> (7,9) ; (1,7) <--> (2,7) ; (4,6) <--> (4,5) ; (1,1) <--> (1,2) ; (3,1) <--> (3,0) ; (1,5) <--> (1,6) ; (8,3) <--> (8,4) ; (9,9) <--> (8,9) ; (8,5) <--> (7,5) ; (1,4) <--> (2,4) ; (3,0) <--> (4,0) ; (3,3) <--> (4,3) ; (6,9) <--> (6,8) ; (1,0) <--> (2,0) ; (6,0) <--> (7,0) ; (8,0) <--> (9,0) ; (2,3) <--> (2,2) ; (2,8) <--> (3,8) ; (5,7) <--> (6,7) ; (1,3) <--> (0,3) ; (9,7) <--> (9,8) ; (7,5) <--> (7,4) ; (1,8) <--> (2,8) ; (6,5) <--> (6,4) ; (0,2) <--> (1,2) ; (0,7) <--> (1,7) ; (0,3) <--> (0,2) ; (4,3) <--> (4,2) ; (5,8) <--> (4,8) ; (9,1) <--> (8,1) ; (9,2) <--> (8,2) ; (1,3) <--> (1,4) ; (2,9) <--> (3,9) ; (4,8) <--> (4,7) ; (0,5) <--> (0,4) ; (8,1) <--> (7,1) ; (0,3) <--> (0,4) ; (9,7) <--> (9,6) ; (7,6) <--> (6,6) ; (1,5) <--> (0,5) ; <ADJLIST_END> <ORIGIN_START> (6,2) <ORIGIN_END> <TARGET_START> (2,1) <TARGET_END> <PATH_START> (6,2) (6,1) (6,0) (5,0) (4,0) (3,0) (3,1) (2,1) <PATH_END>', ascii=('#####################', '# # # #', '# # # # ### # # #####', '# # # # # # #', '# ####### ##### # # #', '# #E # # # #', '###X# ########### # #', '#XXX# # # #', '#X##### ########### #', '#X# # # #', '#X# ######### ### # #', '#X# # # # #', '#X######### # # ### #', '#XXXXS# # # #', '# ########### #######', '# # # # #', '# # ####### ### # ###', '# # # # # #', '# # # ####### ##### #', '# # #', '#####################'), straightaway_footprints=array([[6, 2], [6, 0], [3, 0], [3, 1], [2, 1]])), 'longer_10x10': MANUAL_MAZE(tokens='<ADJLIST_START> (8,2) <--> (8,3) ; (3,7) <--> (3,6) ; (6,7) <--> (6,8) ; (4,6) <--> (5,6) ; (9,5) <--> (9,4) ; (3,3) <--> (3,4) ; (5,1) <--> (4,1) ; (2,6) <--> (2,7) ; (8,5) <--> (8,4) ; (1,9) <--> (2,9) ; (4,1) <--> (4,2) ; (0,8) <--> (0,7) ; (5,4) <--> (5,3) ; (6,3) <--> (6,4) ; (5,0) <--> (4,0) ; (5,3) <--> (5,2) ; (3,1) <--> (2,1) ; (9,1) <--> (9,0) ; (3,5) <--> (3,6) ; (5,5) <--> (6,5) ; (7,1) <--> (7,2) ; (0,1) <--> (1,1) ; (7,8) <--> (8,8) ; (3,9) <--> (4,9) ; (4,6) <--> (4,7) ; (0,6) <--> (0,7) ; (3,4) <--> (3,5) ; (6,0) <--> (5,0) ; (7,7) <--> (7,6) ; (1,6) <--> (0,6) ; (6,1) <--> (6,0) ; (8,6) <--> (8,7) ; (9,9) <--> (9,8) ; (1,8) <--> (1,9) ; (2,1) <--> (2,2) ; (9,2) <--> (9,3) ; (5,9) <--> (6,9) ; (3,2) <--> (2,2) ; (0,8) <--> (0,9) ; (5,6) <--> (5,7) ; (2,3) <--> (2,4) ; (4,5) <--> (4,4) ; (8,9) <--> (8,8) ; (9,6) <--> (8,6) ; (3,7) <--> (3,8) ; (8,0) <--> (7,0) ; (6,1) <--> (6,2) ; (0,1) <--> (0,0) ; (7,3) <--> (7,4) ; (9,4) <--> (9,3) ; (9,6) <--> (9,5) ; (8,7) <--> (7,7) ; (5,2) <--> (5,1) ; (0,0) <--> (1,0) ; (7,2) <--> (7,3) ; (2,5) <--> (2,6) ; (4,9) <--> (5,9) ; (5,5) <--> (5,4) ; (5,6) <--> (6,6) ; (7,8) <--> (7,9) ; (1,7) <--> (2,7) ; (4,6) <--> (4,5) ; (1,1) <--> (1,2) ; (3,1) <--> (3,0) ; (1,5) <--> (1,6) ; (8,3) <--> (8,4) ; (9,9) <--> (8,9) ; (8,5) <--> (7,5) ; (1,4) <--> (2,4) ; (3,0) <--> (4,0) ; (3,3) <--> (4,3) ; (6,9) <--> (6,8) ; (1,0) <--> (2,0) ; (6,0) <--> (7,0) ; (8,0) <--> (9,0) ; (2,3) <--> (2,2) ; (2,8) <--> (3,8) ; (5,7) <--> (6,7) ; (1,3) <--> (0,3) ; (9,7) <--> (9,8) ; (7,5) <--> (7,4) ; (1,8) <--> (2,8) ; (6,5) <--> (6,4) ; (0,2) <--> (1,2) ; (0,7) <--> (1,7) ; (0,3) <--> (0,2) ; (4,3) <--> (4,2) ; (5,8) <--> (4,8) ; (9,1) <--> (8,1) ; (9,2) <--> (8,2) ; (1,3) <--> (1,4) ; (2,9) <--> (3,9) ; (4,8) <--> (4,7) ; (0,5) <--> (0,4) ; (8,1) <--> (7,1) ; (0,3) <--> (0,4) ; (9,7) <--> (9,6) ; (7,6) <--> (6,6) ; (1,5) <--> (0,5) ; <ADJLIST_END> <ORIGIN_START> (6,2) <ORIGIN_END> <TARGET_START> (2,1) <TARGET_END> <PATH_START> (6,2) (6,1) (6,0) (5,0) (4,0) (3,0) (3,1) (2,1) (2,2) (2,3) (2,4) (1,4) (1,3) (0,3) (0,4) (0,5) (1,5) (1,6) (0,6) (0,7) (0,8) <PATH_END>', ascii=('#####################', '# # XXXXX#XXXXE #', '# # # #X###X#X# #####', '# # #XXX#XXX# # #', '# #######X##### # # #', '# #XXXXXXX# # # #', '###X# ########### # #', '#XXX# # # #', '#X##### ########### #', '#X# # # #', '#X# ######### ### # #', '#X# # # # #', '#X######### # # ### #', '#XXXXS# # # #', '# ########### #######', '# # # # #', '# # ####### ### # ###', '# # # # # #', '# # # ####### ##### #', '# # #', '#####################'), straightaway_footprints=array([[6, 2], [6, 0], [3, 0], [3, 1], [2, 1], [2, 4], [1, 4], [1, 3], [0, 3], [0, 5], [1, 5], [1, 6], [0, 6], [0, 8]]))})
LEGACY_AND_EQUIVALENT_TOKENIZERS: list[maze_dataset.tokenization.MazeTokenizer | maze_dataset.tokenization.MazeTokenizerModular] = [MazeTokenizer(tokenization_mode=<TokenizationMode.AOTP_UT_rasterized: 'AOTP_UT_rasterized'>, max_grid_size=20), MazeTokenizer(tokenization_mode=<TokenizationMode.AOTP_UT_uniform: 'AOTP_UT_uniform'>, max_grid_size=20), MazeTokenizer(tokenization_mode=<TokenizationMode.AOTP_CTT_indexed: 'AOTP_CTT_indexed'>, max_grid_size=20), MazeTokenizerModular(prompt_sequencer=PromptSequencers.AOTP(coord_tokenizer=CoordTokenizers.UT(), adj_list_tokenizer=AdjListTokenizers.AdjListCoord(pre=False, post=True, shuffle_d0=True, edge_grouping=EdgeGroupings.Ungrouped(connection_token_ordinal=1), edge_subset=EdgeSubsets.ConnectionEdges(walls=False), edge_permuter=EdgePermuters.RandomCoords()), target_tokenizer=TargetTokenizers.Unlabeled(post=False), path_tokenizer=PathTokenizers.StepSequence(step_size=StepSizes.Singles(), step_tokenizers=(StepTokenizers.Coord(),), pre=False, intra=False, post=False))), MazeTokenizerModular(prompt_sequencer=PromptSequencers.AOTP(coord_tokenizer=CoordTokenizers.UT(), adj_list_tokenizer=AdjListTokenizers.AdjListCoord(pre=False, post=True, shuffle_d0=True, edge_grouping=EdgeGroupings.Ungrouped(connection_token_ordinal=1), edge_subset=EdgeSubsets.ConnectionEdges(walls=False), edge_permuter=EdgePermuters.RandomCoords()), target_tokenizer=TargetTokenizers.Unlabeled(post=False), path_tokenizer=PathTokenizers.StepSequence(step_size=StepSizes.Singles(), step_tokenizers=(StepTokenizers.Coord(),), pre=False, intra=False, post=False))), MazeTokenizerModular(prompt_sequencer=PromptSequencers.AOTP(coord_tokenizer=CoordTokenizers.CTT(pre=True, intra=True, post=True), adj_list_tokenizer=AdjListTokenizers.AdjListCoord(pre=False, post=True, shuffle_d0=True, edge_grouping=EdgeGroupings.Ungrouped(connection_token_ordinal=1), edge_subset=EdgeSubsets.ConnectionEdges(walls=False), edge_permuter=EdgePermuters.RandomCoords()), target_tokenizer=TargetTokenizers.Unlabeled(post=False), path_tokenizer=PathTokenizers.StepSequence(step_size=StepSizes.Singles(), step_tokenizers=(StepTokenizers.Coord(),), pre=False, intra=False, post=False)))]