Algoritma ukiran jahitan, atau versi yang lebih kompleks, digunakan untuk mengubah ukuran gambar yang sadar konten di berbagai program grafik dan pustaka. Mari kita bermain golf!
Input Anda akan berupa array bilangan bulat dua dimensi persegi panjang.
Output Anda akan menjadi array yang sama, satu kolom lebih sempit, dengan satu entri dihapus dari setiap baris, entri-entri itu mewakili jalur dari atas ke bawah dengan jumlah terendah dari semua jalur tersebut.
https://en.wikipedia.org/wiki/Seam_carving
Dalam ilustrasi di atas, nilai setiap sel ditampilkan dalam warna merah. Angka hitam adalah jumlah dari nilai sel dan angka hitam terendah di salah satu dari tiga sel di atasnya (ditunjukkan oleh panah hijau). Jalur yang disorot putih adalah dua jalur jumlah terendah, keduanya dengan jumlah 5 (1 + 2 + 2 dan 2 + 2 + 1).
Dalam kasus di mana ada dua jalur terikat untuk jumlah terendah, tidak masalah yang Anda hapus.
Input harus diambil dari stdin atau sebagai parameter fungsi. Ini dapat diformat dengan cara yang sesuai dengan bahasa pilihan Anda, termasuk tanda kurung dan / atau pembatas. Silakan tentukan dalam jawaban Anda bagaimana input diharapkan.
Output harus stdout dalam format terbatas tegas, atau sebagai fungsi mengembalikan nilai dalam bahasa Anda setara dengan array 2d (yang mungkin termasuk daftar bersarang, dll).
Contoh:
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: Angka-angka semua akan non-negatif, dan setiap jahitan yang mungkin akan memiliki jumlah yang cocok dengan integer 32 bit yang ditandatangani.