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

पायथन में सेल फ्यूजन


मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे सेल कहते हैं; यह सूची विभिन्न कोशिकाओं के आकार का प्रतिनिधित्व कर रही है। अब, प्रत्येक पुनरावृत्ति में, दो सबसे बड़े कक्ष a और b इन नियमों के अनुसार परस्पर क्रिया करते हैं:इसलिए, यदि a =b, तो वे दोनों मर जाते हैं। अन्यथा, दो कोशिकाएँ विलीन हो जाती हैं और उनका आकार ((a + b) / 3) का तल बन जाता है। हमें अंतिम सेल का आकार ज्ञात करना होगा या यदि कोई सेल शेष नहीं है तो -1 वापस करना होगा।

इसलिए, यदि इनपुट [20,40,40,30] जैसा है, तो आउटपुट 16 होगा, पहले पुनरावृत्ति में, 40 और 40 मर जाएंगे, फिर 20 और 30 ((20+30) / 3) के तल बन जाएंगे। =50/3 का तल =16

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

  • सेल :=सेल सरणी के प्रत्येक मान को नकारात्मक में बदलें

  • कोशिकाओं के साथ ढेर बनाएं

  • जबकि सेल खाली नहीं हैं, −

    . करें
    • कोशिकाओं से दो तत्वों को हटाएं और उन्हें फिर से नकारात्मक में परिवर्तित करें, और उन्हें लगातार पहले और दूसरे के रूप में असाइन करें

  • अगर पहला दूसरे के बराबर नहीं है, तो -

    • (पहले+सेकंड)/3) के तल का ऋणात्मक ढेर में डालें

  • कोशिकाओं की ऋणात्मक वापसी[0] यदि कोशिकाओं में कुछ तत्व हैं अन्यथा - 1

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

उदाहरण

from heapq import heapify, heappop, heappush
class Solution:
   def solve(self, cells):
      cells=[-x for x in cells]
      heapify(cells)
      while len(cells)>1:
         first,second = -heappop(cells), -heappop(cells)
         if first!=second:
            heappush(cells, -((first+second)//3))
      return -cells[0] if cells else -1
ob = Solution()
cells = [20,40,40,30]
print(ob.solve(cells))

इनपुट

[20,40,40,30]

आउटपुट

16

  1. जांचें कि क्या रानी पायथन में शतरंज की बिसात पर दिए गए सेल पर हमला कर सकती है

    मान लीजिए कि हमारे पास रानी और प्रतिद्वंद्वी के लिए शतरंज की बिसात पर दो निर्देशांक हैं। ये बिंदु क्रमशः Q और O हैं। हमें यह जांचना होगा कि रानी प्रतिद्वंद्वी पर हमला कर सकती है या नहीं। जैसा कि हम जानते हैं कि रानी एक ही पंक्ति, एक ही स्तंभ और तिरछे आक्रमण कर सकती है। इसलिए, यदि इनपुट Q =(1, 1) O

  1. issuperset () पायथन में

    इस लेख में, हम पायथन में issuperset() और विभिन्न क्षेत्रों में इसके कार्यान्वयन के बारे में जानेंगे। यह विधि बूलियन ट्रू लौटाती है यदि एक सेट बी के सभी तत्वों में सभी तत्व सेट ए होते हैं जो एक तर्क के रूप में पारित होते हैं और यदि ए के सभी तत्व बी में मौजूद नहीं होते हैं तो झूठा रिटर्न देता है। इस

  1. Microsoft Excel में कक्षों को विभाजित करने के 3 तरीके

    कभी-कभी आपके पास एक्सेल में एक ही सेल में डेटा के कई टुकड़े होते हैं। एक्सेल स्प्रेडशीट को संयोजित करने का प्रयास करते समय या डेटा आयात करते समय अक्सर ऐसा होता है। इससे निपटने के बजाय, आप Microsoft Excel में कक्षों को विभाजित कर सकते हैं। हालाँकि, यह प्रक्रिया उतनी सीधी नहीं है, जितना कि केवल एक विभ