Skip to main content

A python package for generating and visualizing n-dimensional mazes.

Project description

A woodsy maze

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 A boring, default maze

beachy, A beachy maze

woodsy, A woodsy maze

christmas, A festive, christmas maze

and kaboom. An explosive, kaboom maze

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

maze_nd-0.1.1.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

maze_nd-0.1.1-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

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

Hashes for maze_nd-0.1.1.tar.gz
Algorithm Hash digest
SHA256 286a8781c712a659e2c2000dd5ccabac973ae60580ecd72139f41dbcee4a0ddb
MD5 769584df767dafb38b41dce216987b85
BLAKE2b-256 25c7a35d02b06c76852551c875cb0b6fbdd5cef2faa0bc39b03e821f45c17d17

See more details on using hashes here.

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

Hashes for maze_nd-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 203ff13a693301639d99a10ef214476bdf2be5bc417de7475bbef83fda6283ab
MD5 aace66c273e7697696450b20c1255df6
BLAKE2b-256 c6cc307bd05300dca6a90067cac3776a89f18d4406c1df4d226d26af97c84f27

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page