Hacker News new | past | comments | ask | show | jobs | submit login
Maze Algorithms (2011) (jamisbuck.org)
116 points by Timothee on June 5, 2020 | hide | past | favorite | 22 comments



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.

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)


My maze algorithms done in perl more than 10 years ago

https://github.com/xa-bi/mazes


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.

[0]https://youtu.be/VwuA2Z1tCaw


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.

https://github.com/FransFaase/MazeGen

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.


The Aldous-Broder algorithm sure is somethin'.


I wonder if I can ace my next technical interview after learning it's intricacies


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.


Really good question actually!

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?


The maze generation is slowed down to visualize what is going on. Most of those mazes can be generated in a few of milliseconds.


By using the event loop, with functions like setTimeout


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.

https://www.schaap.io/404.html


Wilson's algorithm creates the best mazes by having a variety of short and long passages.


Generating mazes on 3d polyhedra & other surfaces: http://matthewarcus.github.io/polyjs/maze.html


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")


If you are interested in mazes and maze solving in general, check out https://www.pathery.com/


Are there any algorithms that are not squares or include line art?


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.

BTW, what do you need the maze algorithm for?



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)


Yes! As a matter of fact Jamis's book includes an extensive section on non-grid mazes.


Amazeing!




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: