আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি সংখ্যা নেবে এবং নির্ধারণ করবে যে সেটি ২-এর ঘাত কিনা।
উদাহরণস্বরূপ —
f(23) = false f(16) = true f(1) = true f(1024) = true
অ্যাপ্রোচ —
বাইনারি ফর্মে ২-এর ঘাতগুলো সবসময় শুধু একটি বিট থাকে। যেমন:
1: 0001 2: 0010 4: 0100 8: 1000
অতএব, সংখ্যাটি শূন্যের চেয়ে বড় কিনা যাচাই করার পর, আমরা একটি বিটওয়াইজ ট্রিক ব্যবহার করে পরীক্ষা করতে পারি যে এক এবং শুধু এক বিট সেট আছে কিনা। সেটি নিচে দেখানো হলো:
num & (num - 1)
উদাহরণ
নিচে কোড দেওয়া হলো:
const num1 = 256;
const num2 = 1024;
const isPowerOfTwo = (num = 1) => {
if (num < 1) {
return false;
};
return (num & (num - 1)) === 0;
};
console.log(isPowerOfTwo(num1));
console.log(isPowerOfTwo(num2));
console.log(isPowerOfTwo(1));
console.log(isPowerOfTwo(23));
আউটপুট
কনসোল আউটপুট:
true true true false