কিভাবে জোড় বেজোড় সংখ্যা নির্ণয় করা যায় ?
চাকুরীতে ইন্টারভিউ দিতে বসেছেন। কেউ এক জন জিজ্ঞাসা করলো, একটি integer সংখ্যা জোড় না বেজোড় তা কিভাবে বের করবেন?
উত্তর সহজ: ২ দিয়ে কোনো সংখ্যাকে ভাগ করলে যদি ভাগশেষ 0 হয় তাহলে সংখ্যাটি জোড় নাহলে বেজোড়।
1 2 | // integer number n: n % 2 == 0 ? "even" : "odd" |
যদি এরপর প্রশ্ন করা হয়, আর কোনো উপায় জানেন কি? ২ দিয়ে ভাগ করা ছাড়াও একটি সংখ্যা জোড় না বেজোড় তা নির্ণয় করা সম্ভব।
কিভাবে?
1 2 3 | // integer number n: n & 1 == 0 ? "even" : "odd" |
Bitwise & (AND) অপারেশন এর মাধ্যমে বের করা সম্ভব কোনো নম্বর জোড় না বেজোড়। এই ধরণের অপারেশন এর সময় যে কোনো নম্বর সর্বশেষ ডিজিট এর সাথে 1 দিয়ে Bitwise & (AND) অপারেশন করলে সহজেই বের হবে নম্বর টি জোড় না বেজোড়।
4 কে বাইনারিতে লেখা হয় : 0b100. সুতরাং:
0b110 & 0b001 = 0b000 = 0
5 কে বাইনারিতে লেখা হয় : 0b101. সুতরাং:
0b101 & 0b001 = 0b001 = 1
খুবই ছোট একটি ট্রিক question . সাধারণত প্রোগ্রামিং ইন্টারভিউ এর সময় এই ধরণের প্রশ্ন জিজ্ঞাসা করা হয়। সুতরাং উত্তর জানা থাকলে ভালো।