আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি ধনাত্মক ইন্টিজার, মনে করুন n, গ্রহণ করে। ফাংশনটি n-এর বাইনারি রিপ্রেজেন্টেশনে যেকোনো দুটি সংলগ্ন ১-এর মধ্যে সর্বোচ্চ দূরত্ব বের করে রিটার্ন করবে।
যদি দুটি সংলগ্ন ১ নেই, তবে ০ রিটার্ন করতে হবে।
দুটি ১ সংলগ্ন হয় যদি তাদের মাঝপথে শুধু ০ থাকে (হতে পারে ০ ০-ও থাকে)। দুটি ১-এর মধ্যে দূরত্ব হলো তাদের বিট পজিশনের absoluta পার্থক্য। উদাহরণস্বরূপ, "1001"-এ দুটি ১-এর দূরত্ব ৩।
উদাহরণস্বরূপ:
ইনপুট ২২ হলে আউটপুট হবে ২,
কারণ:
- ২২-এর বাইনারি কোড 10110
- প্রথম সংলগ্ন ১ জোড়া "10110" দূরত্ব ২
- দ্বিতীয় সংলগ্ন ১ জোড়া "10110" দূরত্ব ১
- উত্তর হলো এই দুটির সর্বোচ্চ, যা ২
লক্ষ্য করুন "10110" একটি বৈধ জোড়া নয় কারণ দুটি ১-এর মাঝপথে একটি ১ আছে।
উদাহরণ
const num = 22;
const binaryGap = (num = 1) => {
let last = -1;
let ans = 0; // go through every bit
for (let i = 0; i < 32; i++) {
// check whether the bit is `1`. //
if ((num >> i) & 1 > 0) {
if (last >= 0) {
ans = Math.max(ans, i - last);
}
last = i;
}
}
return ans;
};
console.log(binaryGap(num));
আউটপুট
কনসোলে আউটপুট হবে:
2