The seam carving algorithm, or a more complex version of it, is used for content-aware image resizing in various graphics programs and libraries. Let's golf it!
Your input will be a rectangular two dimensional array of integers.
Your output will be the same array, one column narrower, with one entry removed from each row, those entries representing a path from top to bottom with the lowest sum of all such paths.
In the above illustration, each cell's value is shown in red. The black numbers are the sum of a cell's value and the lowest black number in one of the three cells above it (pointed to by the green arrows). The white highlighted paths are the two lowest sum paths, both with a sum of 5 (1+2+2 and 2+2+1).
In a case where there are two paths tied for the lowest sum, it does not matter which you remove.
Input should be taken from stdin or as a function parameter. It can be formatted in a manner convenient to your language of choice, including brackets and/or delimiters. Please specify in your answer how the input is expected.
Output should be to stdout in an unambiguously delimited format, or as a function return value in your language's equivalent to a 2d array (which might include nested lists, etc).
Input: 1 4 3 5 2 3 2 5 2 3 5 2 4 2 1 Output: 4 3 5 2 1 4 3 5 3 5 2 3 or 3 2 5 3 5 4 2 1 5 2 4 2 Input: 1 2 3 4 5 Output: 2 3 4 5 Input: 1 2 3 Output: (empty, null, a sentinel non-array value, a 0x3 array, or similar)
EDIT: The numbers will all be non-negative, and every possible seam will have a sum that fits in a signed 32 bit integer.