A python package for generating and visualizing n-dimensional mazes.
Project description
maze-nd
A python package for generating n-dimensional mazes via randomized Prim's Algorithm
Initial implementation in 2D from: https://github.com/ArneStenkrona/MazeFun
Getting Started
Prerequisites
Poetry: https://python-poetry.org/docs/#installation
Installation
Clone the repository:
git clone https://github.com/dthuff/maze-nd
and install dependencies:
cd maze-nd/
poetry install
Or, install via pip:
pip install maze-nd
Usage
Generating maze structures
The MazeND class defines a maze data structure represented by a boolean array of arbitrary shape maze.grid
.
A 2D maze of 40 rows and 40 columns can be generated with:
from maze_nd.maze_nd import MazeND
maze = MazeND([40, 40])
Note that maze dimensions must be odd to ensure a solid outer border. If even shape args are passed, they will be forced to be odd.
maze = MazeND([40, 40])
>>> maze.grid.shape
(39, 39)
A 3D maze of 40 rows, 40 columns, and 20 slices can be generated with:
maze = MazeND([40, 40, 20])
A 7D maze:
maze = MazeND([20, 20, 20, 10, 10, 20, 5])
Caution: generation time is proportional to np.prod(maze.grid.shape)
. This can quickly blow up for mazes with more than 4 dimensions.
Visualizing maze structures
The maze generation process can be visualized using examples/draw_maze.py
:
poetry run python draw_maze.py 40 40
By default, this will save an image of the maze at examples/maze_image.png
Any number of shape dimensions can be passed. A 3D maze can be generated via:
poetry run python draw_maze.py 20 20 20
For mazes with dimension N > 2, 2D planes of the maze will be drawn separated by a vertical border. For an N-D maze, N-1 planes are shown.
The animation can be turned off using --skip-animation
:
poetry run python draw_maze.py 40 40 --skip-animation
Fun color themes can be applied via --theme
:
poetry run python draw_maze.py --theme beachy 40 40
Available themes are:
default
beachy
,
woodsy
,
christmas
,
and kaboom
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file maze_nd-0.1.1.tar.gz
.
File metadata
- Download URL: maze_nd-0.1.1.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.12 Linux/6.2.0-36-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 286a8781c712a659e2c2000dd5ccabac973ae60580ecd72139f41dbcee4a0ddb |
|
MD5 | 769584df767dafb38b41dce216987b85 |
|
BLAKE2b-256 | 25c7a35d02b06c76852551c875cb0b6fbdd5cef2faa0bc39b03e821f45c17d17 |
File details
Details for the file maze_nd-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: maze_nd-0.1.1-py3-none-any.whl
- Upload date:
- Size: 7.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.12 Linux/6.2.0-36-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 203ff13a693301639d99a10ef214476bdf2be5bc417de7475bbef83fda6283ab |
|
MD5 | aace66c273e7697696450b20c1255df6 |
|
BLAKE2b-256 | c6cc307bd05300dca6a90067cac3776a89f18d4406c1df4d226d26af97c84f27 |