Challenge 152 Task #1 - Summing up minimums
[Task #1] - Triangle Sum Path
Description
You are given a triangle array.
Write a script to find the minimum sum path from top to bottom.
Example 1:
Input: $triangle = [ [1], [5,3], [2,3,4], [7,1,0,2], [6,4,5,2,8] ]
1
5 3
2 3 4
7 1 0 2
6 4 5 2 8
Output: 8
Minimum Sum Path = 1 + 3 + 2 + 0 + 2 => 8
Example 2:
Input: $triangle = [ [5], [2,3], [4,1,5], [0,1,2,3], [7,2,4,1,9] ]
5
2 3
4 1 5
0 1 2 3
7 2 4 1 9
Output: 9
Minimum Sum Path = 5 + 2 + 1 + 0 + 1 => 9
Solution
On first reading of the current challenge, I thought we had this task before. After some digging it turns out - not quite. In task #2 of challenge 100 we had the same task with an additional restriction:
When you are on index i on the current row then you may move to either index i or index i + 1 on the next row.
I solved this here.
Without this restriction it becomes even easier. We have to calculate the sum of
the minimum values from each row of the triangle. To do this I’ll use sum0
and
min
from the venerable List::Util
and Perl’s built-in map
.
sub minimum_triangle_sum_path($triangle) {
return sum0( map { min(@$_) } @$triangle );
}
In words:
We map the min
function over the rows of the triangle and calculate the sum of that.
Done.
There is no comment section on this site. For questions, suggestions or errors in my post or solution, please create an issue over here or drop me a mail:
my $mail = join('@', 'pwc', join('.', 'pankoff', 'net'));