Robot moving across a NxM matrix.

Robot moving across a NxM matrix.

Lets say I have a matrix that is a 2 dimensional array of NxM elements and the Robot needs to find all the ways from the top left corner all the way to the bottom right corner. Now the Robot it self has some rules to follow on the way. The Robot can move up, down, left, right in order to get there. However the Robot may not move over the same square more than once.

def robot(matrix,n ,m)
  return 0 if n<0 || m<0 || n>matrix.length-1 || m>matrix.length-1
  return 0 if matrix[n][m] == 1
  return 1 if n==m && n==0
  count=0
  tmp=matrix
  tmp[n][m]=1
  count+=robot(tmp, n+1, m) #right
  count+=robot(tmp, n-1, m) #left
  count+=robot(tmp, n, m+1) #up
  count+=robot(tmp, n, m-1) #down
  tmp[n][m]=0
  return count
end

Now lets say that you have the same size matrix but the Robot can only move down and left.

def robot(matrix,n ,m)
  return 0 if n<0 || m<0 || n>matrix.length-1 || m>matrix.length-1
  return 0 if matrix[n][m] == 1
  return 1 if n==m && n==0
  count=0
  tmp=matrix
  tmp[n][m]=1
  count+=robot(tmp, n-1, m) #left
  count+=robot(tmp, n, m-1) #down
  tmp[n][m]=0
  return count
end