यह चुनौती है लेकिन बेहतर कल्पना के साथ।
कल्पना
आपका प्रोग्राम एक वैरिएबल समीकरण लेगा जिसमें सिंगल वैरिएबल होगा x
और का वैल्यू आउटपुट होगा x
।
इनपुट / पार्सिंग
- इनपुट में केवल नंबर, ऑपरेटर, कोष्ठक (
()
)x
, और एक=
संकेत होगा (इसका अर्थ है कोई व्हाट्सएप नहीं)। - कोष्ठक हमेशा संतुलित रहेगा।
- हमेशा कम से कम 1 होगा
x
। एकx
नंबर से पहले हो सकता है। - सभी समीकरणों का ठीक एक परिणाम होगा।
इन चरणों का पालन करके एक संख्या को परिभाषित किया जा सकता है। एक संख्या को रेगेक्स द्वारा परिभाषित किया जा सकता है -?(\d+(\.\d+)?|\.\d+)
:।
यदि आप रेगेक्स नहीं बोलते हैं: एक अंक के रूप में परिभाषित किया गया है 0-9
- इसकी
-
शुरुआत में इसका संकेत नकारात्मक हो सकता है - फिर कुछ अंक हो सकते हैं। यदि वे कोई अंक नहीं हैं तो एक दशमलव बिंदु होगा
- यदि कोई दशमलव बिंदु मौजूद है, तो कम से कम एक अंक इसका अनुसरण करेगा
सबसे बड़ी संख्या / मूल्य आपकी भाषा की क्षमताओं द्वारा परिभाषित किया जाएगा।
एक ऑपरेटर किसी भी प्रकार का होता है: +-*/
वे हमेशा संख्याओं, और कोष्ठक के बीच दिखाई देंगे
इसका मतलब (5)(5)
सादगी के लिए एक वैध इनपुट नहीं है।
कोष्ठक में हमेशा उनके अंदर एक वैध अभिव्यक्ति (संख्याओं और / या संचालकों का एक वैध संयोजन) होगा। "संतुलित" कोष्ठक को परिभाषित किया गया है क्योंकि प्रत्येक (
में एक संबद्ध समापन होगा)
मूल्यांकन
- संचालन के आदेश का पालन किया जाना चाहिए और वरीयताएँ सबसे कम (सबसे कम) हैं:
- लघुकोष्ठक (सबसे पहले गहरी नेस्टेड)
- गुणा और भाग
- जोड़ और घटाव
- यदि एक ही पूर्वता वाले दो ऑपरेटर होते हैं, तो आपको बाएं - दाएं चलना पसंद करना चाहिए
उत्पादन
आपको किसी तरह से परिणाम का उत्पादन करना चाहिए। यदि आप केवल संख्या परिणाम का उत्पादन नहीं करते हैं, तो अपने उत्तर में स्पष्ट करें कि आउटपुट कैसे आउटपुट किया जाता है। आपका आउटपुट प्रारूप सुसंगत होना चाहिए। आउटपुट एक दशमलव हो सकता है, लेकिन यह हमेशा तर्कसंगत होगा, सटीक आपकी भाषा की शुद्धता तक सीमित है। केवल अगर आपकी भाषा फ्लोटिंग पॉइंट अंकगणित का समर्थन नहीं करती है, तो आपको इसका समर्थन करने की आवश्यकता नहीं है।
नियम
- अंतर्निहित कार्य इस कार्य को अनुमति देते हैं लेकिन , आपको
[uses built-in]
उत्तर के शीर्ष पर स्पष्ट रूप से जोड़ना चाहिए । यह आपके उत्तर को जीतने से छूट देता है - "बिल्ट-इन-ट्रिवियलाइजिंग इस कार्य" में से कोई एक है:
- कुछ जो एक समीकरण में लेता है और एक / चर के लिए मूल्य को आउटपुट करता है
- कुछ जो पूरी तरह से एक समीकरण को सरल करेगा
eval
पार्सिंग की एक महत्वपूर्ण राशि का उपयोग करने के लिए या संबंधित फ़ंक्शन का उपयोग करना । उपयोग कीeval
कार्य करता है और संबंधित अस्वीकृत कर दी जाती है अगर वे करने के लिए उपयोग किया जाता है रेखीय समीकरण का समाधान (इनपुट करने के लिए कम से कम संशोधन के साथ)।- यदि आप संदेह में हैं, तो बस एक टिप्पणी में पूछें।
- बिल्ट-इन जो समीकरण को पार्स करने की अनुमति है
उदाहरण
3+4=x
7
4+x=5
1
3+3*3=x
12
3x-4=7+2x
11
3--1=x
4
3*(2+4x)=7x-4
-2
1.2+2.3x=5.8
2
10=4x
2.5
चालान इनपुट:
(5)(4)=x no operator between (5) and (4)
5(x+3)=2 no operator 5 and (...)
x=y the only variable is x
4=3 there is no x
x+3=x-7 no solution
x=x infinite solutions
+5=x + is not an unary operator. -5=x would be valid though
1/(x-3)=5 Nonlinear
3/x Nonlinear
eval
गिनती चुनौती को तुच्छ साबित करती है? इसके अलावा, new Function(...)
गिनती के रूपों ?