কম্পিউটার টিউটোরিয়াল

পাইথনে বাইনারি রিপ্রেজেন্টেশনে ১-গুলোর মধ্যে সর্বোচ্চ দূরত্ব বের করা


একটি N সংখ্যা দেওয়া আছে। এর বাইনারি রিপ্রেজেন্টেশনে দুটি ক্রমিক ১-এর মধ্যে সর্বোচ্চ দূরত্ব বের করতে হবে। যদি দুটি ক্রমিক ১ না থাকে, তবে ০ ফেরত দিন।

যেমন, 71 হলে আউটপুট ৪। কারণ 71 বাইনারি = 1000111। প্রথম ১ এবং দ্বিতীয় ১-এর দূরত্ব ৪। বাকিগুলোর দূরত্ব ১।

সমাধানের ধাপসমূহ

  • K := N-এর বাইনারি বিটের লিস্ট
  • Max := 0, C := 0, S := 0, Flag := False
  • K-এর প্রতিটি বিট i এর জন্য:
    • যদি K[i] == '1' এবং C == 0 এবং Flag == False: C := i, Flag := True
    • অন্যথায় যদি K[i] == '1' এবং Flag: S := i, Max := max(Max, |S-C|), C := S
  • Max ফেরত দিন।

উদাহরণ

def solve(N):
    B = bin(N).replace('0b','')
    K = list(B)
    Max = 0
    C = 0
    S = 0
    Flag = False
    for i in range(len(K)):
        if K[i] == '1' and C == 0 and Flag is False:
            C = i
            Flag = True
        elif K[i] == '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. Python দিয়ে বাইনারি গ্রিড সাজাতে মিনিমাম সোয়াপ বের করার প্রোগ্রাম

  2. পাইথনে বাইনারি ম্যাট্রিক্সে জল থেকে সর্বোচ্চ ম্যানহ্যাটান দূরত্বের জমি খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে বাইনারি ট্রিতে শুধু সন্তানের সংখ্যা বের করার প্রোগ্রাম

  4. পাইথনে বক্স চেইন থেকে সর্বাধিক দৈর্ঘ্যের চেইন বের করার প্রোগ্রাম