কম্পিউটার

পাইথন ব্যবহার করে একটি সংখ্যার বাইনারি আকারে 1s এর দীর্ঘতম দূরত্ব খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের একটি সংখ্যা N আছে, এর বাইনারি উপস্থাপনায় আমাদের পরপর দুটি 1 এর মধ্যে সবচেয়ে দীর্ঘতম দূরত্ব খুঁজে বের করতে হবে। যদি কোন দুই পরপর 1 না থাকে, তাহলে 0 ফেরত দিন।

সুতরাং, যদি ইনপুট 71 এর মত হয়, তাহলে আউটপুট 4 হবে, কারণ বাইনারিতে 71 হল 1000111। এখন চারটি আছে, এবং প্রথম 1 এবং দ্বিতীয় 1টি 4 দূরত্বে রয়েছে। অন্য সবগুলি এক দূরত্ব দূরে। তাই দীর্ঘতম দূরত্ব এখানে 4।

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

  • K :=N

    এর বাইনারি উপস্থাপনার বিটের একটি তালিকা তৈরি করুন
  • সর্বোচ্চ :=0, C :=0, S :=0

  • পতাকা :=মিথ্যা

  • আমি 0 থেকে K এর আকারের মধ্যে, কর

    • যদি K[i] হয় '1' এবং C হয় 0 এবং পতাকা হয় False, তাহলে

      • C:=i

      • পতাকা :=সত্য

    • অন্যথায় যখন K[i] '1' এবং পতাকা হয়, তখন

      • S:=i

      • যদি Max

        • সর্বোচ্চ :=|S-C|

      • C:=S

  • রিটার্ন ম্যাক্স

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

উদাহরণ

def solve(N):
   B = bin(N).replace('0b','')
   K = str(B)
   K = list(K)
   Max = 0
   C = 0
   S = 0
   Flag = False
   for i in range(len(K)):
      if K[i] is '1' and C is 0 and Flag is False:
         C = i
         Flag = True
      elif K[i] is '1' and Flag:
         S = i
         if Max<abs(S-C):
            Max = abs(S-C)
         C = S
   return Max
n = 71
print(solve(n))

ইনপুট

71

আউটপুট

4

  1. পাইথন ব্যবহার করে একটি বাইনারি গ্রিড সাজানোর জন্য সর্বনিম্ন অদলবদল খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে জল থেকে দীর্ঘতম দূরত্বের জমি খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে একটি বাইনারি গাছে একমাত্র সন্তানের সংখ্যা খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে দীর্ঘতম চেইন তৈরি করে এমন বাক্সের সংখ্যা খুঁজে বের করার প্রোগ্রাম?