081 Path sum two ways.sf 514 B

12345678910111213141516171819202122232425262728293031323334
  1. #!/usr/bin/ruby
  2. # Author: Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Website: https://github.com/trizen
  5. # https://projecteuler.net/problem=81
  6. # usage: sidef problem_081.sf < p081_matrix.txt
  7. var matrix = []
  8. ARGF.each { |line|
  9. matrix << line.trim.split(',').map{.to_n}
  10. }
  11. var end = matrix.end
  12. func path(i, j) is cached {
  13. var paths = []
  14. if (i < end) {
  15. paths << path(i+1, j)
  16. }
  17. if (j < end) {
  18. paths << path(i, j+1)
  19. }
  20. matrix[i][j] + (paths.min \\ 0)
  21. }
  22. say path(0, 0)