Find the length of the shortest path through the matrix from the top left to bottom right corner. You may move right, down, or diagonally right-down one element at a time. The length of the path is the sum of the elements you pass through.
E.g.
M = [*8 6 10 10 4 7 7 7 9 *1 10 5 9 0 8 2 1 3 *2 8 8 8 7 7 9 5 10 *1 *10 *9 *4 *0 ];
>> shortest_path(M)
ans =
35
The shortest path through this matrix has length 35. Each element along the path is marked with a *
Cool problem. Optimal solutions sometimes appear if moving up is enabled.
functional programming approach
Congratulations.
Honestly, I have difficulties with this kind of algorithm. I have the feeling that you only increment i or j, but at the end you check all the matrix.
Thanks, Jean-Marie. This solution uses recursive calls of the function. So all elements of the matrix are processed.
If you would like to learn more about functional programming principles, I recommend 'Functional Programming Principles in Scala' course by Martin Odersky at Coursera. It starts soon. Actually, I wrote this solution after taking the course a year ago. It is very interesting to look at the same problem from different points of view.
Thanks for your advice.
Project Euler: Problem 8, Find largest product in a large string of numbers
196 Solvers
Find the "ordinary" or Euclidean distance between A and Z
119 Solvers
337 Solvers
354 Solvers
Sum of odd numbers in a matrix
232 Solvers