Suppose we have a matrix with size N*N, and each position of the matrix is a block. The position (or block) can be free (value 1) or it can be blocked (value 0), as shown in the following diagram, where S is source and D is destination:
The matrix is the maze and the goal is for the "rat" to start at position [0][0] and go to position [n-1][n-1] (destination). The rat can move in two directions: vertically or horizontally in any position that is not blocked.
Let's start declaring the basic structure of our algorithm, as follows:
export function ratInAMaze(maze) { const solution = []; for (let i = 0; i < maze.length; i++) { // ...