কম্পিউটার

দুটি সংখ্যার L থেকে R রেঞ্জের বিটগুলি একে অপরের পরিপূরক কিনা তা পাইথনে পরীক্ষা করুন


ধরুন আমাদের দুটি সংখ্যা x এবং y এবং একটি প্রদত্ত পরিসর (বাম, ডান) আছে। প্রদত্ত উভয় সংখ্যার বাম থেকে ডানে থাকা সমস্ত বিট একে অপরের পরিপূরক কিনা তা আমাদের পরীক্ষা করতে হবে। আমাদের মনে রাখতে হবে যে ডান থেকে বামে, তাই সর্বনিম্ন তাৎপর্যপূর্ণ বিটটিকে প্রথম অবস্থানে বিবেচনা করা হয়।

সুতরাং, যদি ইনপুটটি x =41 y =54 বাম =2 ডান =5 এর মত হয়, তাহলে আউটপুটটি True হবে, কারণ 41 এবং 54 এর বাইনারি উপস্থাপনা হল 101001 এবং 110110। x এবং y এর 2 থেকে 5 রেঞ্জের বিটগুলি হল "1001" এবং "0110" যা একে অপরের পরিপূরক।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • তাপ :=x XOR y
  • টেম্পের রেঞ্জের (বাম, ডানে) সমস্ত বিট 1 হলে সত্য প্রত্যাবর্তন করুন, অন্যথায় মিথ্যা

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

def are_all_setbits_in_range(n, left, right):
   val = ((1 << right) - 1) ^ ((1 << (left - 1)) - 1)
   new_value = n & val
   if val == new_value:
      return True
   return False
def solve(x, y, left, right):
   temp = x ^ y
   return are_all_setbits_in_range(temp, left, right)
x = 41
y = 54
left = 2
right = 5
print(solve(x, y, left, right))

ইনপুট

41, 54, 2, 5

আউটপুট

True

  1. দুটি গাছের সমস্ত স্তর পাইথনে অ্যানাগ্রাম কিনা তা পরীক্ষা করুন

  2. পাতার ক্রম দুটি পাতার সমান নাকি পাইথনে নয় তা পরীক্ষা করার জন্য প্রোগ্রাম

  3. পাইথনে একটি গাছ অন্য গাছের সাবট্রি কি না তা পরীক্ষা করার জন্য প্রোগ্রাম

  4. দুটি সংখ্যা (m,n) বন্ধুত্বপূর্ণ বা পাইথন ব্যবহার করছে না কিনা তা কীভাবে পরীক্ষা করবেন?