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

पायथन का उपयोग करके संख्या के बाइनरी रूप में 1 की सबसे लंबी दूरी खोजने का प्रोग्राम


मान लीजिए हमारे पास एक संख्या N है, हमें इसके बाइनरी प्रतिनिधित्व में दो लगातार 1 के बीच की सबसे लंबी दूरी ढूंढनी है। यदि दो लगातार 1 नहीं हैं, तो 0 वापस करें।

उदाहरण के लिए, यदि इनपुट 71 है, तो आउटपुट 4 होगा, क्योंकि 71 बाइनरी में 1000111 है। अब चार 1 हैं, और पहला 1 और दूसरा 1 दूरी 4 पर हैं। अन्य सभी एक दूरी पर हैं। इसलिए सबसे लंबी दूरी 4 है।

हल करने के चरण

  • K := N के बाइनरी प्रतिनिधित्व के बिट्स की सूची बनाएं

  • Max := 0, C := 0, S := 0

  • Flag := False

  • i को 0 से K के आकार तक की रेंज में लिए करें

    • यदि K[i] '1' है और C 0 है और Flag False है, तो

      • C := i

      • Flag := True

    • अन्यथा जब K[i] '1' है और Flag है, तो

      • S := i

      • यदि Max < |S-C|, तो

        • Max := |S-C|

      • C := S

  • Max वापस करें

उदाहरण

def solve(N):
    B = bin(N).replace('0b', '')
    K = str(B)
    K = list(K)
    Max = 0
    C = 0
    S = 0
    Flag = False
    for i in range(len(K)):
        if K[i] == '1' and C == 0 and Flag == 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 से बाइनरी ग्रिड में मेजर डायगोनल के ऊपर ज़ीरोज़ के लिए मिनिमम स्वैप्स कैसे ढूंढें? Python से बाइनरी ग्रिड में मेजर डायगोनल के ऊपर ज़ीरोज़ के लिए मिनिमम स्वैप्स कैसे ढूंढें?

    n×n बाइनरी मैट्रिक्स में एडजेसेंट रो स्वैप्स से मेजर डायगोनल के ऊपर सभी एलिमेंट्स 0 करने के लिए मिनिमम स्वैप्स ढूंढें। एल्गोरिदम प्रत्येक रो के लिए राइटमोस्ट 1 की पोजीशन ढूंढें → m[i] = n - j - 1 (डायगोनल से दूरी)। ग्रीडी: i=0 से n-1, ऐसी रो ढूंढें जिसका = n-i-1 हो (यानी डायगोनल के ऊपर 1 न हो)। उसे

  1. - रिकर्सन का उपयोग करके संख्या अभाज्य है या नहीं जांचने के लिए Python प्रोग्राम

    जब रिकर्सन तकनीक का उपयोग करके यह पता लगाने की आवश्यकता होती है कि कोई संख्या अभाज्य संख्या है या नहीं, तो एक मेथड परिभाषित किया जाता है, और while कंडीशन का उपयोग किया जाता है।रिकर्सन बड़ी समस्या के छोटे-छोटे टुकड़ों का आउटपुट कंप्यूट करता है, और इन टुकड़ों को बड़ी समस्या का समाधान देने के लिए जोड़त

  1. - पायथन में बॉक्स की सबसे लंबी श्रृंखला की लंबाई ढूंढने का प्रोग्राम

    बॉक्स की सूची दी गई है जहां प्रत्येक बॉक्स [start, end] (start < end) द्वारा दर्शाया गया है। दो बॉक्स जुड़ सकते हैं यदि एक का अंत दूसरे के शुरू के बराबर हो। सबसे लंबी श्रृंखला की लंबाई ढूंढें। उदाहरण इनपुट: boxes = [[4, 5], [5, 6], [4, 8], [1, 2], [2, 4]] आउटपुट: 4 श्रृंखला: [1, 2] → [2, 4] → [4, 5