{"id":29358173,"url":"https://github.com/average-user/mazegen","last_synced_at":"2025-07-09T06:08:57.084Z","repository":{"id":303191519,"uuid":"133723350","full_name":"Average-user/MazeGen","owner":"Average-user","description":"Implementation of different Maze Generation algorithms in Haskell","archived":false,"fork":false,"pushed_at":"2019-05-15T18:54:56.000Z","size":101,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-06T08:44:00.401Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Average-user.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-05-16T21:10:19.000Z","updated_at":"2023-06-24T03:10:04.000Z","dependencies_parsed_at":"2025-07-06T08:54:03.701Z","dependency_job_id":null,"html_url":"https://github.com/Average-user/MazeGen","commit_stats":null,"previous_names":["average-user/mazegen"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Average-user/MazeGen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Average-user%2FMazeGen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Average-user%2FMazeGen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Average-user%2FMazeGen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Average-user%2FMazeGen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Average-user","download_url":"https://codeload.github.com/Average-user/MazeGen/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Average-user%2FMazeGen/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264403827,"owners_count":23602623,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-09T06:08:54.109Z","updated_at":"2025-07-09T06:08:57.077Z","avatar_url":"https://github.com/Average-user.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Haskell Maze Generator\n\nThis software provides an implementation of several algorithms to generate\nmazes. The mazes are shown with\n[Gloss](https://hackage.haskell.org/package/gloss)\n(2D vector graphics, package for Haskell). It also allows to draw paths from one\nplace to another, and is capable of generating perfect and non-perfect mazes.\nThis project is strongly inspired by\n[this](http://weblog.jamisbuck.org/2011/2/7/maze-generation-algorithm-recap)\nblog of Maze Generation algorithms\n\nAlgorithms implemented so far\n- [Growing Tree](https://github.com/Average-user/MazeGen/tree/master/src/Algorithm/GrowingTree.hs)\n- [Hunt And Kill](https://github.com/Average-user/MazeGen/tree/master/src/Algorithm/HuntKill.hs)\n- [Randomized Prims](https://github.com/Average-user/MazeGen/tree/master/src/Algorithm/Prims.hs)\n- [Recursive Backtracker](https://github.com/Average-user/MazeGen/tree/master/src/Algorithm/Backtracker.hs)\n- [Sidewinder](https://github.com/Average-user/MazeGen/tree/master/src/Algorithm/Sidewinder.hs)\n- [Randomized Kruskals](https://github.com/Average-user/MazeGen/tree/master/src/Algorithm/Kruskals.hs)\n- [Eller's Algorithm](https://github.com/Average-user/MazeGen/blob/master/src/Algorithm/Ellers.hs)\n\n#### Usage\n\nThe parameters for building the maze, are specified in `config.json` file. Which\nby default is:\n\n``` json\n{\n    \"algorithm\": \"Prims\",\n    \"maze-size\": \"(30,30)\",\n    \"walls-to-remove\": \"10\",\n    \"draw-paths\": \"True\",\n    \"path-starting-point\": \"(0,0)\",\n    \"path-ending-point\": \"(29, 29)\"\n}\n```\nTo know by what name algorithms are recognized checkout\n[`ParseConfig.hs`](https://github.com/Average-user/MazeGen/blob/master/src/ParseConfig.hs).\n\n`walls-to-remove` refers to the amount of walls to remove from the maze to make\na non-perfect maze. The default 0, generates perfect mazes (one and only one\npath from any place to another).\n\nWhen `draw-paths` is on, it I'll draw shortest paths in red, and the more large\nones in purple.\n\nAn example of default `config.json`:\n\n``` text\nstack build\nstack exec MazeGen-exe\n```\n\n![](https://github.com/Average-user/MazeGen/blob/master/Pictures/example.png)\n\n\n#### Test And Benchmarks\n\nYou can run some random tests using\n[QuickCheck](https://hackage.haskell.org/package/QuickCheck) with:\n\n``` text\nstack test\n```\n\nAnd benchmarks using [\ncriterion](https://hackage.haskell.org/package/criterion) with:\n\n``` text\nstack bench\n```\nAlthough is recommended to use\n\n``` text\nstack bench --ba='-o bench.html'\n```\n\nTo output benchmarks results in an `.html` file. That looks like:\n\n![](https://github.com/Average-user/MazeGen/blob/master/Pictures/bench.png)\n\nLet us say that this benchmarks will always run with the same Random Gen. This\nmeans that every time you run it, it'll measure the time of the same process,\nthat will not be affected by randomness, but only by changes to the algorithms.\nThe Random Gen chosen is completely arbitrary.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faverage-user%2Fmazegen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faverage-user%2Fmazegen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faverage-user%2Fmazegen/lists"}