কম্পিউটার

পার্টিশন N যেখানে অংশের গণনা এবং প্রতিটি অংশের শক্তি 2, এবং অংশের আকার এবং গণনা জাভাস্ক্রিপ্টে সীমাবদ্ধ


আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি সংখ্যা নেয়। ফাংশনটি নিম্নলিখিত নিয়ম অনুসারে সংখ্যাটিকে খণ্ডে ভাগ করতে হবে −

  • খণ্ডের সংখ্যা একটি পাওয়ার−of−দুই,

    হওয়া উচিত
  • প্রতিটি খণ্ডে একটি পাওয়ার-অফ-দুই সংখ্যক আইটেম থাকা উচিত (যেখানে আকার সর্বাধিক দুইটির পাওয়ার পর্যন্ত যায়, তাই 1, 2, 4, 8, 16, 32, 32 সর্বাধিক)

সুতরাং, উদাহরণস্বরূপ, 8 কে 1 বালতিতে ভাগ করা যেতে পারে −

[8]

9 হতে পারে −

[8, 1]

এটি কাজ করে কারণ উভয় সংখ্যাই দুটির শক্তি এবং অ্যারের আকার 2 (দুইটির একটি শক্তিও)।

আসুন 11 -

চেষ্টা করি
[8, 2, 1] 

না যে কাজ করে না।

কারণ অ্যারের আকার হল 3 যা 11 যোগ করলেও দুটির শক্তি নয়৷

[4, 4, 2, 1] 

ওই কাজগুলো! এটি 4টি উপাদান যা দুটির শক্তি।

উদাহরণ

এর জন্য কোড হবে −

ফাংশন পারমুট কম্বিনেশন(n, সর্বোচ্চ){ const maxPowerOf2 =1 <<সর্বোচ্চ; const m =~~(n / maxPowerOf2); const A =নতুন অ্যারে(সর্বোচ্চ + 1).ফিল(0); A[সর্বোচ্চ] =m; let num =n − m * maxPowerOf2; যাক p =0; যাক bitCount =0; যখন (সংখ্যা){ যদি (সংখ্যা এবং 1){ বিটকাউন্ট +=1; A[p] =1; } সংখ্যা>>=1; p +=1; } const min =m + bitCount; যাক লক্ষ্য =1; যখন (লক্ষ্য <মিনিট) লক্ষ্য *=2; যদি (লক্ষ্য> n) −1 ফেরত দেয়; যদি (টার্গেট ==মিনিট) ফেরত দেয় A.map((c, p) => [1 < 0){ যদি (!A[i]){ i −=1; চালিয়ে যাওয়া } const max =Math.min(লক্ষ্য, A[i]); A[i] -=সর্বোচ্চ; A[i−1] +=2*সর্বোচ্চ; লক্ষ্য -=সর্বোচ্চ; i −=1; } রিটার্ন টার্গেট? −1 :A.map((c, p) => [1 < 

আউটপুট

এবং কনসোলে আউটপুট হবে −

<প্রে>[ [ 1, 1 ], [ 2, 1 ], [ 4, 2 ], [ 8, 0 ], [ 16, 0 ], [ 32, 0 ] ]

  1. জাভাস্ক্রিপ্টে স্ট্রিং অ্যানাগ্রাম হয়

  2. হেক্সে রূপান্তর করা এবং জাভাস্ক্রিপ্টে সংখ্যার অংশ যোগ করা

  3. জাভাস্ক্রিপ্টে প্রস্থ এবং পর্দার আকারের অনুপাতের (প্রস্থ:উচ্চতা) উপর ভিত্তি করে উচ্চতা খোঁজা

  4. জাভাস্ক্রিপ্টে প্রাইমগুলির শক্তি এবং গুণফল হিসাবে সংখ্যার প্রতিনিধিত্ব করা