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

पायथन में एक रेंज में XOR वाले जोड़ों की गिनती करने का प्रोग्राम


मान लीजिए हमारे पास एक सरणी nums है और दो मान l और r हैं। हमें अच्छे जोड़ों (nice pairs) की संख्या ज्ञात करनी है। यहाँ एक अच्छा जोड़ा (i, j) वह है जहां 0 ≤ i < j < nums का आकार और l ≤ (nums[i] XOR nums[j]) ≤ r हो।

उदाहरण के लिए, यदि इनपुट nums = [4,1,7,2], l = 2, r = 6 है, तो आउटपुट 6 होगा क्योंकि अच्छे जोड़े हैं: (1,0): 1 XOR 4 = 5, (1,2): 1 XOR 7 = 6, (1,3): 1 XOR 2 = 3, (0,3): 4 XOR 2 = 6, (0,2): 4 XOR 7 = 3, (2,3): 7 XOR 2 = 5।

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

  • एक फ़ंक्शन test() परिभाषित करें जो nums और x लेता है।

  • count := nums में तत्वों की आवृत्ति वाला एक मैप।

  • res := 0

  • जब तक x शून्येतर है, तब तक:

    • यदि x विषम है, तो:

      • res := res + count[a] * count[(x - 1) XOR a] का योग सभी a के लिए count में।

    • count := कुंजी a/2 और मान (count[a] + count[a XOR 1]) वाला मैप, सभी a के लिए count में।

    • x = x/2 का भागफल।

  • res/2 का भागफल लौटाएं।

  • मुख्य विधि से test(nums, r + 1) - test(nums, l) लौटाएं।

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

from collections import Counter def solve(nums, l, r):    def test(nums, x):       count = Counter(nums)       res = 0       while x:          if x & 1:             res += sum(count[a] * count[(x - 1) ^ a] for a in count)          count = Counter({a >> 1: count[a] + count[a ^ 1] for a in count})          x >>= 1       return res // 2    return test(nums, r + 1) - test(nums, l) nums = [4,1,7,2] l = 2 r = 6 print(solve(nums, l, r))

इनपुट

[4,1,7,2], 2, 6 

आउटपुट

6

  1. - पायथन में लगातार इंडेक्स जोड़े स्वैप करके सरणी खोजने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें प्रत्येक लगातार सम इंडेक्स को एक दूसरे के साथ स्वैप करके और प्रत्येक लगातार विषम इंडेक्स को एक दूसरे के साथ स्वैप करके सूची लौटानी है। इसलिए, यदि इनपुट है nums = [8,5,3,4,8,9,3,6,4,7], तो आउटपुट होगा [3, 4, 8, 5, 3, 6, 8, 9, 4, 7]। इसे हल कर

  1. - पायथन में जांचने का प्रोग्राम कि हम डिजिट जोड़ी और कितने भी डिजिट ट्रिपलेट्स प्राप्त कर सकते हैं या नहीं

    मान लीजिए हमारे पास s नामक एक न्यूमेरिक स्ट्रिंग है। हमें जांचना है कि क्या कोई ऐसी व्यवस्था है जहां हमारे पास एक ही कैरेक्टर की एक जोड़ी हो और बाकी स्ट्रिंग एक ही कैरेक्टर्स के कितने भी ट्रिपलेट्स बना सके। तो, यदि इनपुट s = 21133123 है, तो आउटपुट True होगा, क्योंकि दो 2s हैं जो 22 जोड़ी बनाते हैं औ

  1. पायथन में ऐरे में x से बड़े सभी वैल्यूज को फ़िल्टर करने का प्रोग्राम पायथन में ऐरे में x से बड़े सभी वैल्यूज को फ़िल्टर करने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक संख्याओं की सूची है। हमारे पास x नामक एक और संख्या भी है। हमें nums से उन सभी नंबरों को फ़िल्टर करके ढूंढना है जो x से कम हैं। पायथन में filter() मेथड होता है जो फंक्शन को आर्गुमेंट के रूप में लेता है और इस फंक्शन का उपयोग करके फ़िल्टर करता है। तो, यदि इनपुट nums = [1,5