Maximum triangle path sum: Difference between revisions
Content added Content deleted
(Added the Rust language) |
m (→{{header|Sidef}}: modified code to work with the latest version of Sidef) |
||
Line 1,361: | Line 1,361: | ||
=={{header|Sidef}}== |
=={{header|Sidef}}== |
||
{{trans|Perl}} |
{{trans|Perl}} |
||
Iterative solution: |
|||
<lang ruby>var sum = [0]; |
<lang ruby>var sum = [0]; |
||
Line 1,367: | Line 1,369: | ||
sum = [ |
sum = [ |
||
x.first + sum.first, |
x.first + sum.first, |
||
1 .. x.len-2 -> map{|i| x[i] + sum[i-1, i].max}..., |
1 ... x.len-2 -> map{|i| x[i] + [sum[i-1, i]].max}..., |
||
x.last + sum.last, |
x.last + sum.last, |
||
]; |
]; |
||
Line 1,373: | Line 1,375: | ||
say sum.max;</lang> |
say sum.max;</lang> |
||
Recursive solution: |
|||
<lang ruby>var triangle = ARGF.slurp.lines.map{.words.map{.to_i}}; |
|||
func max_value(i=0, j=0) is cached { |
|||
i == triangle.len && return 0; |
|||
triangle[i][j] + [max_value(i+1, j), max_value(i+1, j+1)].max; |
|||
} |
|||
say max_value();</lang> |
|||
{{out}} |
{{out}} |
||
<pre>% sidef maxpath.sf triangle.txt |
<pre>% sidef maxpath.sf triangle.txt |