El algoritmo de tallado de costura, o una versión más compleja del mismo, se utiliza para cambiar el tamaño de la imagen con contenido en varios programas gráficos y bibliotecas. ¡Vamos a jugar golf!
Su entrada será una matriz rectangular de dos números enteros.
Su salida será la misma matriz, una columna más estrecha, con una entrada eliminada de cada fila, esas entradas representan una ruta de arriba a abajo con la suma más baja de todas esas rutas.
https://en.wikipedia.org/wiki/Seam_carving
En la ilustración anterior, el valor de cada celda se muestra en rojo. Los números negros son la suma del valor de una celda y el número negro más bajo en una de las tres celdas encima (señalado por las flechas verdes). Las rutas resaltadas en blanco son las dos rutas de suma más baja, ambas con una suma de 5 (1 + 2 + 2 y 2 + 2 + 1).
En un caso donde hay dos caminos atados para la suma más baja, no importa cuál elimines.
La entrada debe tomarse de stdin o como un parámetro de función. Se puede formatear de una manera conveniente para el idioma de su elección, incluidos los corchetes y / o delimitadores. Especifique en su respuesta cómo se espera la entrada.
La salida debe ser stdout en un formato delimitado sin ambigüedades, o como un valor de retorno de función en el equivalente de su idioma a una matriz 2d (que puede incluir listas anidadas, etc.).
Ejemplos:
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)
EDITAR: todos los números no serán negativos, y cada costura posible tendrá una suma que se ajuste a un entero de 32 bits con signo.