# Final Word

Look back at the course we have just concluded.

We'll cover the following

Congratulations, you have completed this course on mazes!

Hopefully, you’re now equipped with some important skills that will help you achieve your goals. Give yourself a round of applause!

## Recap

In this course, we have learned to generate our own mazes using Ruby. Each maze was unique and different. We took our existing knowledge of software engineering and used it to generate these puzzles in a variety of shapes and sizes. We made mazes out of squares, circles, triangles, and hexagons. We put them on cylinders and cubes, spheres, and even Möbius strips. We stretched them into other dimensions, squeezed them into arbitrary outlines, weaved them, braided them, printed them, and at last folded them.

Let's look at what we have learned so far.

### Step-by-step

First, we introduced some basic techniques and walked through the beginnings of a grid implementation that we used throughout the course. We learned about Dijkstra’s algorithm and saw how it can be used not only to find solutions to the mazes we generate but also to gain insight into the structures and patterns hiding within those mazes. We learned different ways to generate these twisty little passages.

Second, we saw how to fit mazes into arbitrary outlines and how to build them out radially in circles. We explored different grid styles based on hexagons and triangles and even took some tentative steps toward 3D mazes by building passages that weave over and under one another.

Third, we introduced some ways to generate mazes that included some tricks for varying the algorithms to produce things like dense weaves, rooms, or even infinitely long mazes.

As a final step, we tried building these mazes in multiple dimensions. We learned how to add passages moving up and down between different levels of our mazes and even learned ways to generate them on surfaces of 3D objects, like cubes and spheres.

Get hands-on with 1200+ tech skills courses.