আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা কিছু সংখ্যা গ্রহণ করে এবং সমীকরণ সन्तুষ্ট করার সঠিক অপারেশন সিকোয়েন্স রিটার্ন করবে। ব্যবহারযোগ্য অপারেটরها: (+, -, *, /, ^, %)
উদাহরণ:
ইনপুট: 5 3 8 আউটপুট: 5+3=8 ইনপুট: 9 27 3 আউটপুট: 9=27/3 ইনপুট: 5 2 25, 1 5 2 আউটপুট: 5^2=25, 1=5%2
প্রতিটি ইনপুটের জন্য কমপক্ষে একটি সম্ভাব্য সিকোয়েন্স আছে, আমাদের কমপক্ষে একটি সঠিক সিকোয়েন্স রিটার্ন করতে হবে।
সমস্যা সমাধানের অ্যালগরিদম:
- প্রথমে একদিকে বড় সংখ্যাটি বেছে নিন (যেমন ১ ৪ ৭-এ ৭)
- তারপর মাঝপথে সমান চিহ্ন দিন। (১ ৪=৭)
- শেষে সমীকরণটি সমাধান করুন
- যদি কাজ না করে, তবে অন্য সংখ্যাটি চেষ্টা করুন
উদাহরণ
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];
// brute force দিয়ে সমাধান চেষ্টা
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' ]