पृष्ठभूमि
यह पहेली चार चौकों की पहेली (अपने आप में एक पिछले प्रश्न का विषय ) पर भिन्नता है । उस पहेली की तरह, उद्देश्य केवल चार अंकों और कुछ गणितीय ऑपरेटरों का उपयोग करते हुए, विभिन्न पूर्ण संख्याओं के लिए गणितीय अभिव्यक्तियों को खोजना है। इस मामले में, हालांकि, अनुमत अंक सिर्फ 2, 0, 1 और 5 हैं । प्रत्येक को एक बार समाधान में और सही क्रम में दिखाई देना चाहिए। आश्चर्यजनक रूप से कई संपूर्ण संख्याओं को इस तरह से दर्शाया जा सकता है। सॉल्वर को पहले हाथ से हल करने की कोशिश करने के लिए प्रोत्साहित किया जाता है, क्योंकि यह अजीब तरह से सुखद है।
नियम
निरंतर या एकल अंकों से निर्माण किया जा सकता है:
- इंटेगर: जैसे 2, 0, 15, आदि।
- दशमलव: जैसे .2, .01, 1.5, आदि।
- पुनरावृत्ति दशमलव : उदा .2 ~ (= 0.222 ...), .15 ~ (= 0.1555 ...), 20.15 ~~ (= 20.1515 ...)
निम्नलिखित एकरी संचालन की अनुमति है:
- एकतरफा नकार: -x
- वर्गमूल: sqrt (x)
- पूर्णांक:
निम्नलिखित बाइनरी संचालन की अनुमति है:
- मानक अंकगणितीय ऑपरेटर: x + y, xy, x * y और x / y
- मनमाना घातांक: x ^ y
- मनमानी जड़ें: आरटी [x] (y) (= y का मूल x)
कार्य
आपके प्रोग्राम को 0 और 100 के बीच के पूर्णांकों के रूप में अभिव्यक्तियों को प्रिंट करना चाहिए, और फिर इसे उत्पन्न करने वाले भावों की संख्या को आउटपुट करता है।
- समाधानों को प्रारूप n = [expr] क्रम में मुद्रित किया जाना चाहिए।
- इस क्रम में प्रत्येक अंक को 2, 0, 1, 5, सभी का उपयोग करना चाहिए।
- ऊपर वर्णित संकेतन का उपयोग करके भावों को मुद्रित किया जाना चाहिए। व्हाट्सएप के रूप में अनावश्यक कोष्ठकों की अनुमति है लेकिन आवश्यक नहीं है। ऑपरेटर की पूर्ववर्ती स्थिति का क्रम एकात्मक नकार, तथ्यपूर्ण, घातांक, गुणा / भाग और जोड़ / घटाव है।
- कार्यक्रम को सभी नंबरों के लिए समाधान वापस करने की आवश्यकता नहीं है। एक प्रोग्राम जो केवल 0 आउटपुट करता है इसलिए मान्य है; हालाँकि, स्कोरिंग सेक्शन नीचे देखें।
- कार्यक्रम को एक आधुनिक कंप्यूटर पर 15 मिनट के भीतर चलना चाहिए।
आप एक कार्यक्रम या फ़ंक्शन लिख सकते हैं। अभिव्यक्तियों को STDOUT (या निकटतम विकल्प) में मुद्रित किया जाना चाहिए। अभिव्यक्तियों की संख्या को STDOUT में मुद्रित किया जा सकता है या पूर्णांक के रूप में लौटाया जा सकता है। मानक कोड गोल्फ प्रतिबंध लागू होते हैं।
उदाहरण आउटपुट
0=2*0*1*5
10=20*1*.5
42=((2+0!)!+1)!/5!
100=20*1*5
4
स्कोरिंग
अद्यतन : @orlp ने स्कोरिंग सिस्टम में एक दोष नोट किया है। Http://meta.codegolf.stackexchange.com/questions/5106/way-of-salvaging-two-zero-one-five-puzzle-challenge देखें कि यह कैसे तय किया जाना चाहिए या नहीं।
समाधानों को सबसे पहले उनके द्वारा बनाए गए भावों की संख्या और फिर बाइट्स में उनकी कोड लंबाई द्वारा बनाया जाता है। इसलिए, एक 1000 बाइट प्रोग्राम जो 80 परिणाम उत्पन्न करता है, एक 100 बाइट प्रोग्राम को हरा देगा जो केवल 79 का उत्पादन करता है (हालांकि बाद वाले को लापता परिणामों को शामिल करने के लिए आसानी से बढ़ाया जा सकता है)।
उन लोगों के लिए जो एक प्रेरक लक्ष्य चाहते हैं, नीचे उन अभिव्यक्तियों की संख्या पर एक कम बाउंड है जिन्हें प्रतिनिधित्व किया जा सकता है। मैं एक प्रविष्टि जमा करने की योजना नहीं बनाता, इसलिए कम से जीतना अच्छी तरह से संभव हो सकता है!
कम से कम 85 (101 में से), हालांकि यह अधिक हो सकता है।
स्कोरबोर्ड
अतिरिक्त प्रोत्साहन के रूप में, यहाँ स्कोर प्रगति का सारांश है। जब भी आप उच्चतम स्कोर को हराते हैं, तो अपने आप को तालिका के शीर्ष पर जोड़ने के लिए स्वतंत्र महसूस करें (या किसी और से पूछें)।
- 0 भाव, 1 बाइट (पायथ): कार्यान्वयन जो केवल 0 आउटपुट करता है