কম্পিউটার

পাইথন ব্যবহার করে n-তম বাইনারি স্ট্রিং-এ Kth বিট খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের দুটি ধনাত্মক মান আছে n এবং k, এখন আমরা নিম্নলিখিত নিয়মগুলি ব্যবহার করে একটি বাইনারি স্ট্রিং S_n তৈরি করতে পারি -

  • S_1 =0

  • S_i =S_i-1 concatenate "1" concatenate reverse(invert(S_i-1)) i> 1

    এর জন্য

এখানে বিপরীত (x) বিপরীত স্ট্রিং x প্রদান করে, এবং উল্টানো(x) x-এ সমস্ত বিট ফ্লিপ করে।

এগুলি হল এই ধরনের চারটি স্ট্রিংয়ের উদাহরণ

  • S_1 ="0"

  • S_2 ="011"

  • S_3 ="0111001"

  • S_4 ="011100110110001"

আমাদের S_n এ kth বিট খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি n =4 k =10 এর মত হয়, তাহলে আউটপুট হবে 1 কারণ S_4 ="011100110110001", তাই 10 তম বিট হল 1 (প্রথম বিটটি 1 অবস্থানে)।

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

  • k যদি 1 এর মত হয়, তাহলে

    • স্ট্রিং হিসাবে 0 ফেরত দিন

  • অন্যথায়,

    • arr :=একক উপাদান 0

      সহ একটি অ্যারে
    • arr2 :=একক উপাদান 1

      সহ একটি অ্যারে
    • যখন k> arr এর আকার, do

      • টেমপ্লাস্ট :=arr এর অনুলিপি

      • temp2last :=arr2 এর কপি

      • arr :=টেমপ্লাস্ট কনক্যাটেনেট 1 কনক্যাটেনেট টেম্প2লাস্ট

      • arr2 :=টেমপ্লাস্ট কনক্যাটেনেট 0 কনক্যাটেনেট টেম্প2লাস্ট

  • arr

    থেকে k-1 তম উপাদান ফেরত দিন

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

উদাহরণ

def solve(n, k):
   if k == 1:
      return(str(0))
   else:
      arr = [0]
      arr2 = [1]
      while k > len(arr):
         templast = arr.copy()
         temp2last = arr2.copy()
         arr = templast + [1] + temp2last
         arr2 = templast + [0] + temp2last
      return(str(arr[k-1]))
n = 4
k = 10
print(solve(n, k))

ইনপুট

4, 10

আউটপুট

1

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

  2. পাইথন ব্যবহার করে M আকারের সর্বশেষ গ্রুপ খুঁজে বের করার প্রোগ্রাম

  3. পাইথন ব্যবহার করে একটি বন্ধনী স্ট্রিং ব্যালেন্স করার জন্য ন্যূনতম সন্নিবেশ খুঁজে বের করার প্রোগ্রাম

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