I got interested in mazes late last year and found Mr. Buck's resources invaluable. In fact, I received his book for Christmas. I highly recommend it, definitely worth the paperback purchase to support his work.
Several years ago, I wrote a maze generator using POV-Ray [0]. It's interesting trying to write a queue in a language that only has simple fixed-length arrays.
IMO, the recursive backtracking algorithm looks the best, and I'd probably use that if I were to ever return to this quick little project.
Recently, I have been working on a maze program (in C++) that generates SVG files that can be used to cut mazes with a laser cutter. I also have been trying to do some statistical analyses on the various algorithms.
Because this program is for my own experiments, I simply modify the 'main' function if I want to change some parameters or select another combination of algorithms. See 'all_tests' for some examples of how the various methods can be called.
This might be a stupid question but how can the site run multiple maze generation algorithm at the same time? My understanding is that javascript is single thread.
I peeked at the javascript and it looks like when you hit `run`, it is calling the step at a setInterval (if I'm reading this right, as fast as the browser can call run)
So at the end of each run call, the interpreter figures out which setInterval timer to execute next and has the chance to pick other mazes. (I don't know much about how the JS engine resolves which "not quite thread" gets run next when there are multiple candidates)
Thanks! I ran multiple maze at the same time and time it and it seems like the maze ran just as fast as running only one maze at a time. If the interpreter can pick other maze, should it take longer? Did I miss anything here?
I feel mazes are a nice hello world project for learning a new programming language. I made one in JavaScript last month when I was setting up a personal web site. I added a maze to the 404 page to show how truly lost you are when you end up there. It is the most interesting page on my web site so far.
I got so interested in mazes after the last HN post on Eller's algorithm that I actually created and published a real mobile game based on it! (shameless plug: it's called "Squashy Squares")
I believe most of these algorithms work on graph structures internally, which means you can use them on any topology as long as you have connectivity information.
So if you want really random maze shapes, sprinkle random points, then use voronoi to get a topology, then use backtracking on that. Your maze will be built out of randomly shaped polygons.
Does anyone have book/website recommendations for maze generation/solving in Python? All the links so far are awesome, but i'd love a 1-axis challenge (i.e., learn the algos) rather than a 2-axis challenge (i.e., learn ruby while learning the algos)
I implemented several of the algorithms for my Rust maze generation tools (https://github.com/animate-object/mazes, https://github.com/animate-object/maze-cli), (and the game I built on top of them https://github.com/animate-object/followed)