Uses recursive backtracker algorithm to generate and Dijkstra's algorithm to find longest path. Connecting cells are masked by the selected shape, and excess cells are trimmed off before display.