কম্পিউটার

পাইথনে পূর্ণসংখ্যাকে শূন্য করতে ন্যূনতম এক বিট অপারেশন খুঁজে বের করার প্রোগ্রাম


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

  • n এর বাইনারি উপস্থাপনায় ডানদিকের বিটটি নির্বাচন করুন।

  • n এর বাইনারি উপস্থাপনায় ith বিট পরিবর্তন করুন যখন (i-1) তম বিট 1 এ সেট করা হয় এবং (i-2) থ থেকে 0 তম বিট 0 এ সেট করা হয়।

সুতরাং অবশেষে আমাদের n কে 0-এ রূপান্তরিত করার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি n =6 এর মত হয়, তাহলে আউটপুট হবে 4 কারণ প্রাথমিকভাবে 6 ="110", তারপরে দ্বিতীয় অপারেশন দ্বারা "010" তে রূপান্তর করুন, তারপর প্রথম অপারেশন ব্যবহার করে "011" তে রূপান্তর করুন, তারপরে রূপান্তর করুন " 001" দ্বিতীয় অপারেশন ব্যবহার করে এবং অবশেষে প্রথম অপারেশন ব্যবহার করে "000" এ রূপান্তর করুন৷

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

  • n :=সংখ্যার বাইনারি বিটের তালিকা n

  • m:=একটি নতুন তালিকা

  • শেষ:=0

  • প্রতিটি d-এর জন্য n, করুন

    • যদি শেষটি 1 এর মত হয়, তাহলে

      • d:=1-d

    • শেষ:=d

    • m

      এর শেষে d ঢোকান
  • m:=m

    এর উপাদানগুলিকে যুক্ত করে বাইনারি সংখ্যা তৈরি করুন
  • দশমিক আকারে m ফেরত দিন

উদাহরণ

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

def solve(n):
   n=list(map(int,bin(n)[2:]))
   m=[]
   last=0
   for d in n:
      if last==1:
         d=1-d
      last=d
      m.append(d)
   m=''.join(map(str,m))
   return int(m,2)

n = 6
print(solve(n))

ইনপুট

"95643", "45963"

আউটপুট

4

  1. পাইথনে B-এর আগে A-কে তৈরি করতে ন্যূনতম সংখ্যক অক্ষর মুছে ফেলার জন্য প্রোগ্রাম

  2. পাইথনে সমস্ত 1গুলিকে একসাথে গোষ্ঠীভুক্ত করার জন্য প্রয়োজনীয় ন্যূনতম অদলবদল খুঁজে বের করার জন্য প্রোগ্রাম

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

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