वर्गों अग्रसर कंप्यूटर ग्राफिक्स, जो नमूनों की एक ग्रिड से 2 डी isocontours ठीक करने के लिए प्रयोग किया जाता है से एक एल्गोरिथ्म है (यह भी देखें, अपने बड़े भाई मार्चिंग घन 3 डी सेटिंग्स के लिए)। विचार ग्रिड के प्रत्येक सेल को स्वतंत्र रूप से संसाधित करना है, और इसके कोनों पर मूल्यों के आधार पर उस सेल से गुजरने वाले आकृति को निर्धारित करना है।
इस प्रक्रिया में पहला कदम यह निर्धारित करना है कि किन किनारों को कंटूर से जोड़ा जाता है, इस आधार पर कि कोने समोच्च के मूल्य से ऊपर या नीचे हैं। सादगी के लिए, हम केवल मूल्य के साथ आकृति पर विचार करेंगे 0, जैसे कि हम इस बात में रुचि रखते हैं कि कोने सकारात्मक हैं या नकारात्मक। भेद करने के मामले हैं :24 = 16

चित्र स्रोत: विकिपीडिया
सफेद और काले रंग की पहचान वास्तव में यहां मायने नहीं रखती है, लेकिन निश्चितता के लिए कहना है कि सफेद सकारात्मक है और काला नकारात्मक है। हम उन मामलों की अनदेखी करेंगे जहां कोनों में से एक बिल्कुल है 0।
काठी अंक (मामले 5 और 10) थोड़ी अतिरिक्त कठिनाई प्रदान करते हैं: यह स्पष्ट नहीं है कि किन विकर्णों को केवल कोनों को देखकर उपयोग किया जाना चाहिए। यह चार कोनों (यानी केंद्र मूल्य का एक अनुमान) के औसत को खोजने के द्वारा हल किया जा सकता है, और विकर्णों को चुन सकता है जैसे कि विपरीत दिशाओं के साथ कोनों को केंद्र कोनों से अलग करते हैं। यदि औसत ठीक है 0, तो या तो मामले को चुना जा सकता है।
आम तौर पर, इन 16 मामलों को केवल एक लुकअप तालिका में संग्रहीत किया जाता है। यह दक्षता के लिए बहुत अच्छा है, लेकिन निश्चित रूप से, हम कोड को इधर-उधर कम करना पसंद करेंगे । इसलिए आपका कार्य इस लुकअप चरण को पूरा करना है और यथासंभव कम कोड में ASCII प्रतिनिधित्व का प्रिंट लेना है।
चुनौती
आपको अपनी पसंद के निश्चित क्रम में चार कोनों (गैर-शून्य पूर्णांक) का मान दिया जाता है। फिर आपको सही बिंदुओं के मामलों को हल करते हुए, सही तरीके से सही लेआउट उत्पन्न करना चाहिए।
आप STDIN (या निकटतम विकल्प), कमांड-लाइन तर्क या फ़ंक्शन तर्क के माध्यम से इनपुट ले रहे हैं और STDOUT (या निकटतम विकल्प), फ़ंक्शन रिटर्न मान या फ़ंक्शन (आउट) पैरामीटर के माध्यम से परिणाम लिख सकते हैं।
इनपुट किसी भी सुविधाजनक स्ट्रिंग या सूची प्रारूप में लिया जा सकता है।
निम्नलिखित 5x5 ब्लॉकों में से एक का उपयोग करके ASCII कला में 16 मामलों का प्रतिनिधित्व किया जाएगा:
o---o o---o o---o
| | | | | | |
| | |---| | | |
| | | | | | |
o---o o---o o---o
o---o o---o o---o o---o
|/ | | \| | | | |
| | | | | | | |
| | | | |\ | | /|
o---o o---o o---o o---o
o---o o---o
|/ | | \|
| | | |
| /| |\ |
o---o o---o
आपको किसी भी अग्रणी या अनुगामी व्हाट्सएप को प्रिंट नहीं करना चाहिए, लेकिन आप एक ही वैकल्पिक न्यूलाइन को प्रिंट कर सकते हैं।
यह कोड गोल्फ है, इसलिए सबसे छोटा उत्तर (बाइट्स में) जीतता है।
परीक्षण के मामलों
परीक्षण के मामले यह मानते हैं कि इनपुट टॉप-लेफ्ट , टॉप-राइट , बॉटम-लेफ्ट , बॉटम-राइट में दिया गया है । टेस्ट मामलों को 9 समूहों में प्रस्तुत किया जाता है, ऊपर दिए गए 9 अभ्यावेदन में से प्रत्येक के लिए एक (समान क्रम में, खाली सेल से शुरू होकर, दो काठी बिंदुओं के साथ समाप्त होता है)।
[1, 2, 1, 3]
[-9, -2, -2, -7]
[4, 5, -1, -2]
[-1, -2, 3, 4]
[7, -7, 7, -7]
[-5, 5, -5, 5]
[1, -6, -4, -1]
[-2, 3, 3, 4]
[-1, 6, -4, -1]
[2, -3, 3, 4]
[-1, -6, 4, -1]
[2, 3, -3, 4]
[-1, -6, -4, 1]
[2, 3, 3, -4]
[3, -8, -9, 2]
[-3, 8, 9, -2]
[8, -3, -2, 9]
[-8, 3, 2, -9]
इसके अतिरिक्त, निम्नलिखित परीक्षण मामले या तो काठी अंक (आपकी पसंद) वापस कर सकते हैं:
[1, -4, -2, 5]
[-1, 4, 2, -5]