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