067 Maximum path sum II.sf 568 B

123456789101112131415161718192021222324252627
  1. #!/usr/bin/ruby
  2. # Author: Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Website: https://github.com/trizen
  5. # Find the maximum total from top to bottom in triangle.txt, a 15K text file containing a triangle with one-hundred rows.
  6. # https://projecteuler.net/problem=67
  7. # Runtime: 0.273s
  8. var data = %f'p067_triangle.txt'.read
  9. var triangle = data.lines.map{.words.map{.to_i}}
  10. var sum = [0]
  11. triangle.each { |x|
  12. sum = [
  13. x[0] + sum[0],
  14. {|i| x[i] + max(sum[i-1, i]) }.map(1 ..^ x.end)...,
  15. x[-1] + sum[-1],
  16. ]
  17. }
  18. say sum.max