यह चुनौती एक मोंड्रियन पेंटिंग विवरण भाषा (एमपीडीएल) के लिए दुभाषिया कोडिंग में शामिल है ।
भाषा की परिभाषा
भाषा आयतों के ढेर पर काम करती है। एक आयत को इसके ऊपरी बाएँ समन्वय और निचले दाएँ समन्वय द्वारा परिभाषित किया गया है। निर्देशांक पूर्णांक होना चाहिए। स्टैक को विशेषताओं के साथ एकल आयत के साथ आरंभीकृत किया गया है(1,1,254,254)
प्रत्येक कमांड में निम्नलिखित प्रारूप है:
<character><integer>
तीन आदेश हैं:
v<integer>
: स्टैक में नवीनतम आयत पर एक ऊर्ध्वाधर विभाजन करें, पैरामीटर द्वारा इंगित स्थिति में (प्रतिशत के रूप में)। स्रोत आयत को स्टैक से हटा दिया जाता है और विभाजन के परिणामस्वरूप दो नए आयतों के साथ बदल दिया जाता है। बाईं आयत को स्टैक पर धकेल दिया जाता है, फिर दायाँ आयत। जैसा कि आयत निर्देशांक पूर्णांक होते हैं, भिन्नों को सबसे बड़े पूर्णांक में गोल किया जाना चाहिए।
h<integer>
: क्षैतिज विभाजन। शीर्ष आयत को स्टैक पर धकेल दिया जाता है, फिर नीचे आयत।
c<integer>
: स्टैक से नवीनतम आयत को हटाता है और इसे पैरामीटर के रूप में दिए गए रंग में पेंट करता है। 1 = सफेद, 2 = लाल, 3 = नीला, 4 = पीला
चुनौती
एक प्रोग्राम लिखें जो एक पेंटिंग विवरण के रूप में लेता है और चित्रित आयतों का 256x256 बिटमैप प्रतिनिधित्व बनाता है। आयतों को 3 पिक्सेल काली रेखा के साथ अलग किया जाना चाहिए। एक या दो पिक्सेल आयत में उनके गैर-काले पिक्सेल सीमा ब्लैक पिक्सल्स द्वारा छिपे होने चाहिए।
इनपुट को एक पैरामीटर के रूप में या एक फ़ाइल के रूप में, आपके ऊपर पढ़ा जा सकता है। आदेशों को एक स्थान से अलग किया जाना चाहिए। आप मान सकते हैं कि इनपुट फ़ाइल में सिंटैक्स सही है और इसमें अनुगामी या प्रमुख स्थान, टैब आदि नहीं हैं। आउटपुट को सीधे स्क्रीन पर प्रदर्शित किया जा सकता है, या फ़ाइल में सहेजा जा सकता है, आपके ऊपर।
सबसे छोटा कोड जीतता है।
परीक्षा
निम्नलिखित स्रोत:
v25 h71 v93 h50 c4 c1 c1 c2 h71 c3 h44 c1 c1
लाल, नीले और पीले रंग में संरचना II का उत्पादन करना चाहिए :
v30 v50 c1 c5 h70 v50 c1 c3 c2
।
v
औरh
तर्क पिक्सेल में होना चाहिए