- Mazes For Programmers part 1, introduction
- Mazes For Programmers part 2, some basics
- Mazes For Programmers part 3, graphical UI
- Mazes For Programmers part 4, implementing the first two algorithms
- Mazes For Programmers part 5, Dijkstra’s algorithm
- Mazes For Programmers part 6, paths through the mazes
- Mazes For Programmers part 7, the Aldous-Broder algorithm, and when random is not very random
- Mazes For Programmers part 8, a random walk with Wilson’s algorithm
- Mazes For Programmers part 9, some statistics, and combining the Aldous-Broder and Wilson’s algorithms
- Mazes For Programmers part 10, improving the Aldous-Broder algorithm to remove short dead-ends
- Mazes For Programmers part 11, Ruby vs C# speed tests
- Source code on GitHub
I am reading the rather excellent Mazes For Programmers by Jamis Buck, and am following along, building my own mazes.
As you can see from pretty much every review of the book, the one (and generally single) criticism everyone has is that the code samples are in Ruby. This is not altogether surprising as the author was one of the Ruby On Rails core team, but it does cut out the vast majority of developers who are not familiar with Ruby. Had the samples been in a C-style language (C++, C#, Java, JavaScript, etc), it would have been instantly accessible to a vast amount of developers.
However, I viewed this as an opportunity to learn a new language, and dutifully installed Ruby. It took me a bit of struggling to get this all working (they don’t make it easy), but I got there. Armed with a quick Ruby tutorial, I got myself familiar with the basic syntax and got to work.
It didn’t take me long to cross Ruby off the list of languages that I want to learn. Before anyone jumps on me for that, it’s not a criticism, it’s just that I haven’t yet seen any advantages to using Ruby over my current toolset. Realising that apart from being fun, writing maze generation and solving code held the key to understanding some interesting and possibly useful algorithms, I decided to drop Ruby and develop my own C# code.
Whilst this was a little frustrating, as it required me to understand the author’s code a lot more deeply than I would have done otherwise, it had the big advantage of requiring me to understand the author’s code a lot more deeply than I would have done otherwise! Copying code from a book doesn’t make you study it properly. Trying to convert it to another language means you have to.
I have created a GitHub repository for my code samples. Please feel free to download my code and play with it. I would be interested to hear if anyone has any comments.
I’m hoping to blog about my progress with this book. Watch this space.
Be First to Comment