Dikiş oyma algoritması veya daha karmaşık bir sürümü, çeşitli grafik programlarında ve kitaplıklarda içeriğe duyarlı görüntü için kullanılır. Hadi golf oynayalım!
Girişiniz dikdörtgen iki boyutlu bir tamsayı dizisi olacaktır.
Çıktınız aynı dizi olacak, bir sütun daha dar olacak ve her satırdan bir giriş kaldırılacak, bu girişler yukarıdan aşağıya bir yolu temsil edecek ve bu yolların en düşük toplamına sahip olacak.
https://en.wikipedia.org/wiki/Seam_carving
Yukarıdaki çizimde, her bir hücrenin değeri kırmızı ile gösterilmiştir. Siyah sayılar, bir hücrenin değerinin ve üzerindeki üç hücreden birindeki (yeşil oklarla gösterilen) en düşük siyah sayının toplamıdır. Vurgulanan beyaz yollar, her ikisi de 5 (1 + 2 + 2 ve 2 + 2 + 1) olmak üzere en düşük iki toplam yoldur.
En düşük toplam için iki yolun bağlı olduğu durumlarda, hangisini kaldırdığınız önemli değildir.
Giriş stdin'den veya bir fonksiyon parametresi olarak alınmalıdır. Köşeli ayraçlar ve / veya sınırlayıcılar dahil, dilinize uygun bir şekilde biçimlendirilebilir. Lütfen cevabınızda girdinin nasıl beklendiğini belirtin.
Çıktı, açıkça sınırlandırılmış bir biçimde veya dilinizin 2d dizisine (iç içe listeler, vb. İçerebilir) eşdeğer bir işlev dönüş değeri olarak stdout olmalıdır.
Örnekler:
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)
DÜZENLEME: Sayıların tümü negatif olmayacak ve olası tüm dikişlerin işaretli bir 32 bit tamsayıya uyan bir toplamı olacaktır.