इस चुनौती में आपका काम किसी दिए गए "माचिस के समीकरण" का विश्लेषण करना है ...

... और यह पता लगाने के लिए कि क्या इसे मैचों को फिर से व्यवस्थित करके एक वैध समीकरण में बदल दिया जा सकता है। यदि ऐसा है, तो आपको ऐसा करने के लिए कम से कम संख्या में आउटपुट और परिणामी समीकरण करना होगा।
इनपुट
इनपुट एक स्ट्रिंग है जिसे STDIN से पढ़ा जा सकता है, एक फ़ंक्शन तर्क के रूप में लिया जाता है या किसी फ़ाइल में संग्रहीत किया जा सकता है। यह एक समीकरण है जो एक माचिस की व्यवस्था का प्रतिनिधित्व करता है और निम्नलिखित EBNF का उपयोग करके वर्णित किया जा सकता है:
input = term, "=", term ;
term = number | (term, ("+" | "-"), term) ;
number = "0" | (numeralExceptZero , {numeral}) ;
numeralExceptZero = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
numeral = "0" | numeralExceptZero ;
एक वैध इनपुट के लिए एक उदाहरण होगा 3+6-201=0+0+8।
कार्य
निम्नलिखित दृष्टांत पर विचार करें जहाँ प्रत्येक माचिस की संख्या में एक संख्या है:

अब हम प्रत्येक इनपुट प्रतीक का मिलान इस प्रकार की मिलान स्थिति के अनुसार करते हैं:
0 ↦ 1,2,3,4,5,6
1 ↦ 4,5
2 ↦ 2,3,5,6,8
3 ↦ 3,4,5,6,8
4 ↦ 1,4,5,8
5 ↦ 1,3,4,6,8
6 ↦ 1,2,3,4,6,8
7 ↦ 4,5,6
8 ↦ 1,2,3,4,5,6,8
9 ↦ 1,3,4,5,6,8
- ↦ 8
+ ↦ 8,10
= ↦ 7,9
प्रत्येक इनपुट फार्मूले को मैचस्टिक व्यवस्था में बदल दिया जा सकता है। उदाहरण के लिए, समीकरण "45 + 6 = 92" बन जाता है

जहां अप्रयुक्त माचिस की तीलियां निकलती हैं। आपका काम यह है कि समीकरण को वैध बनाने के लिए कम से कम मैचस्टिक्स का पता लगाना है।
उत्पादन
हम तीन संभावित मामलों में अंतर करते हैं:
- यदि इनपुट मान्य नहीं है (अर्थात यह उपरोक्त EBNF को संतुष्ट नहीं करता है), आउटपुट जो भी आप चाहते हैं।
- अन्यथा, यदि मैचस्टिक्स को फिर से व्यवस्थित करके समीकरण को वैध में बदलने के तरीके हैं, तो आपको न्यूनतम संख्या में पुनर्व्यवस्था और संबंधित समीकरण दोनों को आउटपुट करना होगा। इनपुट के रूप में, आउटपुट समीकरण को दिए गए EBNF को भी संतुष्ट करना होगा। उपरोक्त उदाहरण में, सही उत्पादन होगा
और । यदि परिणामी समीकरण के लिए कई संभावनाएं हैं, तो उनमें से किसी को भी आउटपुट करें।
146+6=52 - अन्यथा (इसलिए यदि इनपुट वैध है लेकिन समीकरण को सच करने का कोई तरीका नहीं है), तो आपको आउटपुट करना होगा
-1।
विवरण
- आपको मैचों को हटाने या जोड़ने की अनुमति नहीं है। इसका मतलब है, यदि इनपुट
nमाचिस की तीलियों से बना है, तो आउटपुट में बिल्कुलnमाचिस की तीलियां भी होनी चाहिए । - "खाली" माचिस-ब्लॉक केवल एक समीकरण के अंत और शुरुआत में अनुमत हैं, मध्य में नहीं। तो, उदाहरण के लिए, मोड़
7-1=6में7 =6-1बस को हटाने के द्वारा-1बाईं ओर से और सिर्फ 3 matchstick rearrangements के साथ सही पक्ष पर इसे जोड़ने की अनुमति नहीं है। चूँकि मैं वास्तव में इस चुनौती के एक दिलचस्प हिस्से के रूप में संख्याओं से मेलस्टिक पदों के लिए मैपिंग को नहीं देखता, 20 बाइट्स के प्लस के लिए , आप या तो हो सकते हैं
- एक फ़ाइल का उपयोग करें जिसमें मैपिंग
(number/operation ↦ matchstick positions)किसी भी उचित तरीके से संग्रहीत की जाती है, या - यदि आपकी प्रोग्रामिंग भाषा
Mapडेटाटाइप का समर्थन करती है , तो मान लें कि आपके पास(number/operation ↦ matchstick positions)मैपिंग तक पहुंच है, जो मानचित्रण के साथ पूर्व- निर्मित है। उदाहरण के लिए यह नक्शा इस तरह दिख सकता है:{(0,{1,2,3,4,5,6}),(1,{4,5}),(2,{2,3,5,6,8}),(3,{3,4,5,6,8}), ..., (-,{8}),(+,{8,10}),(=,{7,9})}
- एक फ़ाइल का उपयोग करें जिसमें मैपिंग
उदाहरण
इनपुट: 1+1=3 ↦ आउटपुट: 1 और1+1=2
इनपुट: 15+6=21 ↦ आउटपुट: 0 और15+6=21
इनपुट: 1=7 ↦ आउटपुट: -1
इनपुट: 950-250=750 ↦ आउटपुट: 2 और990-240=750
इनपुट: 1-2=9 ↦ आउटपुट: 1 और1+2=3
इनपुट: 20 + 3=04 ↦ आउटपुट: कुछ भी
विजेता
यह कोड-गोल्फ है , इसलिए सबसे छोटा सही उत्तर (बाइट्स में) जीतता है। पहला सही उत्तर पोस्ट किए जाने के एक सप्ताह बाद विजेता को चुना जाएगा।
=(2 माचिस) की स्थिति को बदल सकते हैं और -(1 माचिस की तीली) और उन सभी नंबरों को छोड़ दें जहां वे हैं। यदि, हालांकि, 2 को बाएं चलना पड़ा, तो आपको आवश्यक चाल भी गिननी होगी।
1+1+2=3-6+10? और आउटपुट के बारे में भी यही सवाल है।
0: 1, 2, 3, 4, 5, 6निरंतरता के लिए कृपया जोड़ें