Name | maze-nd JSON |
Version |
0.1.1
JSON |
| download |
home_page | |
Summary | A python package for generating and visualizing n-dimensional mazes. |
upload_time | 2023-11-21 03:56:18 |
maintainer | |
docs_url | None |
author | Daniel |
requires_python | >=3.10,<4.0 |
license | MIT |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
![A woodsy maze](https://github.com/dthuff/maze-nd/blob/master/examples/maze_kaboom_100_30.png)
# maze-nd
A python package for generating n-dimensional mazes via [randomized Prim's Algorithm](https://en.wikipedia.org/wiki/Maze_generation_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](https://github.com/dthuff/maze-nd/blob/master/examples/maze_default_90_40.png)
`beachy`,
![A beachy maze](https://github.com/dthuff/maze-nd/blob/master/examples/maze_beachy_90_40.png)
`woodsy`,
![A woodsy maze](https://github.com/dthuff/maze-nd/blob/master/examples/maze_woodsy_90_40.png)
`christmas`,
![A festive, christmas maze](https://github.com/dthuff/maze-nd/blob/master/examples/maze_christmas_90_40.png)
and `kaboom`.
![An explosive, kaboom maze](https://github.com/dthuff/maze-nd/blob/master/examples/maze_kaboom_90_40.png)
Raw data
{
"_id": null,
"home_page": "",
"name": "maze-nd",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.10,<4.0",
"maintainer_email": "",
"keywords": "",
"author": "Daniel",
"author_email": "huffdanielt@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/25/c7/a35d02b06c76852551c875cb0b6fbdd5cef2faa0bc39b03e821f45c17d17/maze_nd-0.1.1.tar.gz",
"platform": null,
"description": "![A woodsy maze](https://github.com/dthuff/maze-nd/blob/master/examples/maze_kaboom_100_30.png)\n\n# maze-nd\n\nA python package for generating n-dimensional mazes via [randomized Prim's Algorithm](https://en.wikipedia.org/wiki/Maze_generation_algorithm)\n\nInitial implementation in 2D from: https://github.com/ArneStenkrona/MazeFun\n\n# Getting Started\n\n## Prerequisites\nPoetry: https://python-poetry.org/docs/#installation\n\n## Installation\n\n### Clone the repository: \n\n git clone https://github.com/dthuff/maze-nd\n\n### and install dependencies:\n\n cd maze-nd/\n poetry install\n\n### Or, install via pip:\n\n pip install maze-nd\n\n# Usage\n## Generating maze structures\nThe MazeND class defines a maze data structure represented by a boolean array of arbitrary shape `maze.grid`.\n\nA 2D maze of 40 rows and 40 columns can be generated with:\n\n from maze_nd.maze_nd import MazeND\n maze = MazeND([40, 40])\n\nNote 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.\n\n maze = MazeND([40, 40])\n\n >>> maze.grid.shape\n (39, 39)\n\nA 3D maze of 40 rows, 40 columns, and 20 slices can be generated with:\n\n maze = MazeND([40, 40, 20])\n\nA 7D maze:\n\n maze = MazeND([20, 20, 20, 10, 10, 20, 5])\n\n_**Caution**_: generation time is proportional to `np.prod(maze.grid.shape)`. This can quickly blow up for mazes with more than 4 dimensions.\n\n\n## Visualizing maze structures\n\nThe maze generation process can be visualized using `examples/draw_maze.py`:\n\n poetry run python draw_maze.py 40 40\n\nBy default, this will save an image of the maze at `examples/maze_image.png`\n\nAny number of shape dimensions can be passed. A 3D maze can be generated via:\n\n poetry run python draw_maze.py 20 20 20\n\nFor 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.\n\n\nThe animation can be turned off using `--skip-animation`:\n\n poetry run python draw_maze.py 40 40 --skip-animation\n\nFun color themes can be applied via `--theme`:\n\n poetry run python draw_maze.py --theme beachy 40 40\n\nAvailable themes are: \n`default`\n![A boring, default maze](https://github.com/dthuff/maze-nd/blob/master/examples/maze_default_90_40.png)\n\n`beachy`, \n![A beachy maze](https://github.com/dthuff/maze-nd/blob/master/examples/maze_beachy_90_40.png)\n\n`woodsy`, \n![A woodsy maze](https://github.com/dthuff/maze-nd/blob/master/examples/maze_woodsy_90_40.png)\n\n`christmas`, \n![A festive, christmas maze](https://github.com/dthuff/maze-nd/blob/master/examples/maze_christmas_90_40.png)\n\nand `kaboom`.\n![An explosive, kaboom maze](https://github.com/dthuff/maze-nd/blob/master/examples/maze_kaboom_90_40.png)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A python package for generating and visualizing n-dimensional mazes.",
"version": "0.1.1",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c6cc307bd05300dca6a90067cac3776a89f18d4406c1df4d226d26af97c84f27",
"md5": "aace66c273e7697696450b20c1255df6",
"sha256": "203ff13a693301639d99a10ef214476bdf2be5bc417de7475bbef83fda6283ab"
},
"downloads": -1,
"filename": "maze_nd-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "aace66c273e7697696450b20c1255df6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10,<4.0",
"size": 6989,
"upload_time": "2023-11-21T03:56:16",
"upload_time_iso_8601": "2023-11-21T03:56:16.969876Z",
"url": "https://files.pythonhosted.org/packages/c6/cc/307bd05300dca6a90067cac3776a89f18d4406c1df4d226d26af97c84f27/maze_nd-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "25c7a35d02b06c76852551c875cb0b6fbdd5cef2faa0bc39b03e821f45c17d17",
"md5": "769584df767dafb38b41dce216987b85",
"sha256": "286a8781c712a659e2c2000dd5ccabac973ae60580ecd72139f41dbcee4a0ddb"
},
"downloads": -1,
"filename": "maze_nd-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "769584df767dafb38b41dce216987b85",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10,<4.0",
"size": 5986,
"upload_time": "2023-11-21T03:56:18",
"upload_time_iso_8601": "2023-11-21T03:56:18.526843Z",
"url": "https://files.pythonhosted.org/packages/25/c7/a35d02b06c76852551c875cb0b6fbdd5cef2faa0bc39b03e821f45c17d17/maze_nd-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-11-21 03:56:18",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "maze-nd"
}