Consider the number triangle shown below. Write a program that calculates the highest sum of numbers that can be passed on a route that starts at the top and ends somewhere on the base. Each step can go either diagonally down to the left or diagonally down to the right.
In the sample above, the route from 7 to 3 to 8 to 7 to 5 produces the highest sum: 30.
5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
30