Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में पूर्णांकों को शून्य बनाने के लिए न्यूनतम एक बिट संचालन खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक संख्या n है, हमें इसे निम्नलिखित क्रियाओं का उपयोग करके कितनी भी बार 0 में बदलना है -

  • n के द्विआधारी प्रतिनिधित्व में सबसे दाहिने बिट का चयन करें।

  • जब (i-1)वें बिट को 1 पर सेट किया जाता है और (i-2)वें से 0वें बिट को 0 पर सेट किया जाता है, तो n के बाइनरी प्रतिनिधित्व में ith बिट को बदलें।

तो अंत में हमें n को 0 में बदलने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या ज्ञात करनी होगी।

इसलिए, यदि इनपुट n =6 की तरह है, तो आउटपुट 4 होगा क्योंकि शुरू में 6 ="110", फिर इसे दूसरे ऑपरेशन द्वारा "010" में कनवर्ट करें, फिर पहले ऑपरेशन का उपयोग करके "011" में कनवर्ट करें, फिर कनवर्ट करें " 001" दूसरे ऑपरेशन का उपयोग करके और अंत में पहले ऑपरेशन का उपयोग करके "000" में कनवर्ट करें।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • n :=संख्या n के बाइनरी बिट्स की सूची

  • एम:=एक नई सूची

  • अंतिम:=0

  • n में प्रत्येक d के लिए, करें

    • यदि अंतिम 1 के समान है, तो

      • घ:=1-डी

    • अंतिम:=घ

    • 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. पायथन में सभी 1s को एक साथ समूहित करने के लिए आवश्यक न्यूनतम स्वैप खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग है, हमें स्ट्रिंग में किसी भी स्थान पर सभी 1 को एक साथ समूहित करने के लिए आवश्यक न्यूनतम संख्या में स्वैप की आवश्यकता है। तो अगर इनपुट 10101001101 जैसा है, तो आउटपुट 3 होगा, जितना संभव हो समाधान 000001111111 है। इसे हल करने के लिए, हम इन चरणों का पालन करेंग

  1. पायथन में एक नंबर से दूसरे नंबर बनाने के लिए आवश्यक न्यूनतम संख्या में संचालन खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक नंबर स्टार्ट है और दूसरा नंबर एंड (स्टार्ट <एंड) है, हमें इन ऑपरेशंस का उपयोग करके स्टार्ट टू एंड को कन्वर्ट करने के लिए आवश्यक ऑपरेशंस की न्यूनतम संख्या ज्ञात करनी होगी - 1 से वृद्धि 2 से गुणा करें इसलिए, यदि इनपुट प्रारंभ =5, अंत =11 जैसा है, तो आउटपुट 2 होगा, क्योंकि

  1. पायथन में एक स्ट्रिंग सबस्ट्रिंग बनाने के लिए आवश्यक न्यूनतम संख्या में संचालन खोजने के लिए कार्यक्रम

    मान लीजिए कि हमारे पास दो तार s और t हैं, हमें t को s का विकल्प बनाने के लिए s के लिए आवश्यक न्यूनतम संक्रियाएँ ज्ञात करनी होंगी। अब, प्रत्येक ऑपरेशन में, हम s में कोई भी स्थिति चुन सकते हैं और उस स्थिति के वर्ण को किसी अन्य वर्ण में बदल सकते हैं। इसलिए, यदि इनपुट s =abbpqr, t =bbxy जैसा है, तो आउट