সুন্দর আয়োজন:
ধরুন আমাদের 1 থেকে n পর্যন্ত সংখ্যা পূর্ণসংখ্যা আছে। আমরা একটি সুন্দর বিন্যাস সংজ্ঞায়িত করি একটি অ্যারে হিসাবে যা এই সংখ্যা সংখ্যা দ্বারা সফলভাবে নির্মিত হয় যদি এই অ্যারেতে ith অবস্থানের (1 ≤ i ≤ N) জন্য নিম্নলিখিতগুলির একটি সত্য হয় −
-
ith অবস্থানে থাকা সংখ্যাটি i দ্বারা বিভাজ্য।
-
i ith অবস্থানে সংখ্যা দ্বারা বিভাজ্য।
সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি সংখ্যা, সংখ্যা নেয় এবং আমরা সংখ্যার জন্য তৈরি করতে পারি এমন সুন্দর বিন্যাসগুলির গণনা প্রদান করে৷
উদাহরণস্বরূপ, যদি ফাংশনে ইনপুট হয় −
const input = 2
তারপর আউটপুট −
হওয়া উচিতconst output = 2
আউটপুট ব্যাখ্যা
প্রথম সুন্দর বিন্যাস হল [1,2]:
দ্বিতীয় সুন্দর বিন্যাস হল [2,1]:
উদাহরণ
এর জন্য কোড হবে −
const num = 4;
const countArrangements = (num = 1) => {
let ans = 0
const recur = (curr, vis) => {
if (curr === 1){
ans++;
}else{
for (let i = num; i; i--) {
let possible = (i % curr === 0 || curr % i === 0);
let visited = vis & 1 << i;
if (possible && !visited){
recur(curr-1, vis | 1 << i);
}
}
}
};
recur(num, 0);
return ans;
};
console.log(countArrangements(num)); কোড ব্যাখ্যা:
আমরা একটি ফলাফল পরিবর্তনশীল সংজ্ঞায়িত করি (উত্তর ) এবং তারপর একটি পুনরাবৃত্ত ফাংশন তৈরি করুন একাধিক শাখা সম্ভাবনা নেভিগেট করতে. এই পুনরাবৃত্ত ফাংশনের জন্য শুধুমাত্র দুটি আর্গুমেন্টের প্রয়োজন হবে:আমরা বর্তমানে কোন সংখ্যাটি স্থাপন করতে চাইছি (curr) এবং কোন স্থানগুলি ইতিমধ্যেই পরিদর্শন করা হয়েছে (ভিসি)।
আউটপুট
এবং কনসোলে আউটপুট হবে −
8