সুন্দর আয়োজন:
ধরুন আমাদের 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