सीम नक्काशी एल्गोरिथ्म, या इसका एक अधिक जटिल संस्करण, विभिन्न ग्राफिक्स कार्यक्रमों और पुस्तकालयों में सामग्री-जागरूक छवि के लिए उपयोग किया जाता है। चलो इसे गोल्फ!
आपका इनपुट पूर्णांक आयताकार दो पूर्णांक होगा।
आपका आउटपुट एक ही सरणी, एक कॉलम संकरा होगा, जिसमें प्रत्येक पंक्ति से एक प्रविष्टि को हटा दिया जाएगा, वे प्रविष्टियाँ ऐसे सभी रास्तों के निम्नतम योग के साथ ऊपर से नीचे तक एक पथ का प्रतिनिधित्व करती हैं।
https://en.wikipedia.org/wiki/Seam_carving
उपरोक्त उदाहरण में, प्रत्येक कोशिका का मान लाल रंग में दिखाया गया है। काली संख्या एक कोशिका के मूल्य का योग है और इसके ऊपर की तीन कोशिकाओं में से एक में सबसे कम काली संख्या है (हरे तीरों द्वारा इंगित)। सफेद हाइलाइट किए गए पथ दो सबसे कम राशि वाले मार्ग हैं, दोनों 5 (1 + 2 + 2 और 2 + 2 + 2) के योग के साथ हैं।
ऐसे मामले में जहां सबसे कम राशि के लिए दो रास्ते बंधे हैं, इससे कोई फर्क नहीं पड़ता कि आप किसे हटाते हैं।
इनपुट को स्टैडेन से या फंक्शन पैरामीटर के रूप में लिया जाना चाहिए। यह आपकी पसंद की भाषा के लिए सुविधाजनक तरीके से स्वरूपित किया जा सकता है, जिसमें ब्रैकेट और / या सीमांकक शामिल हैं। कृपया अपने उत्तर में बताएं कि इनपुट कैसे अपेक्षित है।
आउटपुट को स्पष्ट रूप से सीमांकित प्रारूप में, या आपकी भाषा में एक मान वापसी मान के रूप में 2d सरणी के बराबर होना चाहिए (जिसमें नेस्टेड सूची शामिल हो सकती है, आदि)।
उदाहरण:
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)
संपादित करें: संख्या सभी गैर-नकारात्मक होगी, और हर संभव सीम में एक राशि होगी जो हस्ताक्षरित 32 बिट पूर्णांक में फिट होती है।