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

पायथन में इंटीजर को शून्य बनाने के लिए न्यूनतम वन-बिट ऑपरेशन खोजने का प्रोग्राम


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

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

तो अंत में हमें n को 0 में बदलने के लिए आवश्यक न्यूनतम ऑपरेशन्स की संख्या ढूंढनी है।

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

हल करने के चरण

  1. n := नंबर n के बाइनरी बिट्स की सूची
  2. m := एक नई सूची
  3. last := 0
  4. n में प्रत्येक d के लिए:
    • यदि last == 1, तो d := 1 - d
    • last := d
    • d को m के अंत में जोड़ें
  5. m := m के एलिमेंट्स को जोड़कर बाइनरी नंबर बनाएं
  6. 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))

इनपुट

6

आउटपुट

4
  1. - पायथन में सभी 1s को एक साथ समूहित करने के लिए न्यूनतम स्वैप की संख्या खोजने का प्रोग्राम

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

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

    मान लीजिए हमारे पास एक संख्या start और एक अन्य संख्या end है (start < end), हमें start को end में बदलने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या ढूंढनी है इन संक्रियाओं का उपयोग करके: 1 से बढ़ाएं 2 से गुणा करें उदाहरण के लिए, यदि इनपुट है start = 5, end = 11, तो आउटपुट होगा 2, क्योंकि हम 2 से ग

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

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