Perfect Maze Generator

Context

In my search for an intership I e-mailed many companies. One of these companies wanted me to complete a test before I could come for the interview. The assignment was to create a perfect maze generator using any algorithm I wanted. A perfect maze is defined as having no loops and no inaccessible areas. Any two points are connected by a singular unbroken path.

Execution

I finished this project in about a week and included 3 algorithms the user can choose from. I also added a lot of other customization like maze colors, size and generation speed. A problem I encountered when making this is that the performance really isn't great. I had to limit the maze size to 50x50 because things really started to slow down after that. I think the main reason for this is that all the maze cells and walls are individual UI objects. If I remember correctly the whole canvas is redrawn every time a single element under that canvas changes. With 50x50 maze that will be 12,500 elements, however I never made a GameObject version so this is all just speculation.

Updates

In the first semester of the 2019-2020 schoolyear I learned about the SOLID principles. An assignment we had was to choose any project and improve the code by applying the SOLID principles. For this assingment I chose this project because there was quite a lot of improvement I could make. These improvements came from the feedback I got at the interview with the company and also from learning about the SOLID principles. You can compare these changes by looking at the project before the changes I made on 2019-09-21.