কম্পিউটার

পাইথনে হ্যামিং দূরত্ব


বিবেচনা করুন আমাদের দুটি পূর্ণসংখ্যা আছে। আমাদের তাদের হ্যামিং দূরত্ব খুঁজে বের করতে হবে। হ্যামিং দূরত্ব হল দুটি সংখ্যার মধ্যে বিট ভিন্ন বিট গণনার সংখ্যা। তাই যদি সংখ্যা 7 এবং 15 হয়, তারা বাইনারিতে 0111 এবং 1111 হয়, এখানে MSb ভিন্ন, তাই হ্যামিং দূরত্ব হল 1।

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

  • এর জন্য i =31 নিচে 0
    • b1 =x এর ডান স্থানান্তর (i AND 1 বার)
    • b2 =y এর ডান স্থানান্তর (i AND 1 বার)
    • যদি b1 =b2, তাহলে উত্তর:=উত্তর + 0, অন্যথায় উত্তর:=উত্তর + 1
  • উত্তর ফেরত দিন

উদাহরণ

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

class Solution(object):
   def hammingDistance(self, x, y):
      """
      :type x: int
      :type y: int
      :rtype: int
      """
      ans = 0
      for i in range(31,-1,-1):
         b1= x>>i&1
         b2 = y>>i&1
         ans+= not(b1==b2)
         #if not(b1==b2):
            # print(b1,b2,i)
      return ans
ob1 = Solution()
print(ob1.hammingDistance(7, 15))

ইনপুট

7
15

আউটপুট

1

  1. পাইথনে Sqrt(x)

  2. মৌলিক পাইথন প্রোগ্রামিং চ্যালেঞ্জ

  3. issuperset() পাইথনে

  4. পাইথনে Minkowski দূরত্ব