हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो संख्याओं का एक समूह लेता है और समीकरण को संतुष्ट करने के लिए संचालन का सही क्रम देता है। उपयोग किए जा सकने वाले ऑपरेटर (+, -, *, /, ^,%) हैं।
उदाहरण के लिए -
Input : 5 3 8 Output : 5+3=8 Input : 9 27 3 Output : 9=27/3 Input : 5 2 25 , 1 5 2 Output : 5^2=25 , 1=5%2
प्रत्येक इनपुट के लिए, कम से कम एक संभावित अनुक्रम होता है, हमें कम से कम एक सही अनुक्रम वापस करने की आवश्यकता होती है।
इस समस्या को हल करने के लिए हम जिस एल्गोरिथम का उपयोग करने जा रहे हैं वह है -
-
सबसे पहले, हम एक तरफ से बड़ी संख्या चुनते हैं जैसे 1 4 7 में यह 7 होगा
-
फिर हम बीच का सामना करने के बराबर डालते हैं। 1 4 7 की तरह यह 1 4=7 होगा
-
अंत में, हम समीकरण हल करते हैं
-
अगर वह काम नहीं करता है, तो हम दूसरा नंबर आज़माते हैं
उदाहरण
इसके लिए कोड होगा -
const arr = ["5 3 8", "9 27 3", "5 2 25", "1 5 2", "3 3 3 30"]; const findCombination = (arr = []) => { const answers = []; for(let i = 0; i < arr.length; i++){ const el = arr[i]; // using brute force to try solutions for(let n = 0; n < 1000; n++){ const s = el.replace(/ /g, () => "+− */^%="[Math.floor(Math.random() * 7)]); if(eval(s.replace(/=/g, "===").replace(/\^/g, "**")) === true && answers.indexOf(s) === −1){ answers.push(s); }; }; } return answers; }; console.log(findCombination(arr));
आउटपुट
और कंसोल में आउटपुट होगा -
[ '5+3=8', '9=27/3', '5^2=25', '1=5%2', '3=3%3^30', '3^3+3=30', '3+3^3=30' ]