हमें एक JavaScript फ़ंक्शन लिखना है जो संख्याओं का एक समूह लेता है और समीकरण को संतुष्ट करने के लिए संचालन का सही क्रम लौटाता है। उपयोग किए जा सकने वाले ऑपरेटर हैं (+, -, *, /, ^, %)।
उदाहरण के लिए -
इनपुट : 5 3 8 आउटपुट : 5+3=8 इनपुट : 9 27 3 आउटपुट : 9=27/3 इनपुट : 5 2 25 , 1 5 2 आउटपुट : 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];
// ब्रूट फोर्स का उपयोग करके समाधान आज़माना
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'
]