A-maze-ing is a Python project that generates and solves mazes. The generator uses recursive backtracking — a depth-first traversal that carves passages without revisiting cells — to create perfect mazes by default. For imperfect mazes, the algorithm removes additional walls while respecting the constraint against large open areas. The maze is then solved using breadth-first search (BFS), and can be exported in hexadecimal form.

As part of a two-person team, I built the parser, output_maze.py, the output file generation, and the visual representation of the maze in the terminal. I also set up the reusable mazegen package structure and Makefile, brought the project up to flake8 and strict mypy --strict standards, and contributed to the MazeGenerator class by adding parameter validation and the 3x3 open-area check.

What I learned: how to implement and adapt graph traversal algorithms, structure a reusable Python package, enforce project constraints through validation, and work to strict code quality and type-checking standards.

What I’m proud of: This was the largest project I had completed at the time. Finishing it gave me confidence in my ability to take on larger projects and understand more complex algorithms, while also putting my attention to detail to good use.

Peer feedback:

“The project is very well documented, explained well and obviously very well understood. I enjoyed the approach of making a perfect maze imperfect, very creative.”

— Peer evaluator, 42 London

View on GitHub