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

पायथन में ग्रिड रोशनी

मान लीजिए कि हमारे पास कोशिकाओं का एक एन एक्स एन ग्रिड है, प्रत्येक सेल (एक्स, वाई) में एक दीपक है। प्रारंभ में, कुछ लैंप चालू हैं। लैंप [i] i-वें लैंप का वह स्थान है जो चालू है। प्रत्येक दीपक जो अपने x-अक्ष, y-अक्ष और दोनों विकर्णों पर प्रत्येक वर्ग को चमकता है। अब i-th क्वेरी यानी क्वेरीज़ [i] =(x, y) के लिए, क्वेरी का उत्तर 1 है यदि सेल (x, y) चमकता है, अन्यथा 0. प्रत्येक क्वेरी (x, y) के बाद, हम किसी भी लैंप को बंद कर दें जो सेल (x, y) पर हैं या 8-प्रत्यक्ष रूप से आसन्न हैं। उत्तरों की एक सरणी लौटाएं। प्रत्येक मान उत्तर [i], i-वें क्वेरी क्वेरी [i] के उत्तर के बराबर होना चाहिए।

इसलिए, यदि इनपुट एन =5 की तरह है, लैंप हैं [[0,0], [4,4]], क्वेरी =[[1,1], [1,0]], तो आउटपुट [1] होगा ,0]

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

  • लैंप :=दिए गए सरणी लैंप से जोड़े का सेट

  • मानचित्र बनाएं x, y, diag1, diag2

  • लैंप में प्रत्येक जोड़ी (i, j) के लिए

    • x[i] :=x[i] + 1, y[j] :=y[j] + 1

    • diag1[i + j] :=diag1[i + j] + 1, diag2[i - j] =diag2[i - j] + 1

  • उत्तर :=[]

  • सी में प्रत्येक मान के लिए

    • ए:=मैं [0], बी:=मैं [1]

    • उत्तर में डालें (1 यदि x[a] + y[b] + diag1[a + b] + diag2[a - b]> 0 अन्यथा 0) उत्तर में

    • ए - 1 से ए + 1 तक की पंक्ति के लिए

      • बी -1 से बी + 1 की श्रेणी में कॉल के लिए

        • यदि पंक्ति, कर्नल जोड़ी लैंप में है, तो -

          • x[पंक्ति] :=x[पंक्ति] - 1

          • y[col] :=y[col] - 1

          • diag1[row + col] =diag1[row + col] - 1

          • diag2[row - col] =diag2[row - col] - 1

          • लैंप से निकालें(पंक्ति, कॉलम)

  • वापसी उत्तर

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

उदाहरण

from collections import defaultdict
class Solution(object):
   def gridIllumination(self, N, b, C):
      lamps = {(i[0], i[1]) for i in b}
      x, y, diag1, diag2 = defaultdict(int), defaultdict(int),
defaultdict(int), defaultdict(int)
      for i, j in lamps:
         x[i] += 1
         y[j] += 1
         diag1[i + j] += 1
         diag2[i - j] += 1
      ans = []
      for i in C:
         a = i[0]
         b = i[1]
         ans.append(1 if x[a] + y[b] + diag1[a + b] + diag2[a - b] > 0 else 0)
         for row in range( a - 1, a + 2):
            for col in range(b - 1, b + 2):
               if (row, col) in lamps:
                  x[row] -= 1
                  y[col] -= 1
                  diag1[row + col] -= 1
                  diag2[row - col] -= 1
                  lamps.remove((row, col))
         return ans
ob = Solution()
N = 5
lamps = [[0,0],[4,4]]
query = [[1,1],[1,0]]
print(ob.gridIllumination(N, lamps, query))

इनपुट

5, [[0,0],[4,4]], [[1,1],[1,0]]

आउटपुट

[1, 0]

  1. कैसे अजगर Matplotlib में एक स्पेक्ट्रोग्राम पर एक्स-अक्ष ग्रिड जगह के लिए?

    पायथन में एक स्पेक्ट्रोग्राम पर एक्स-अक्ष ग्रिड रखने के लिए, हम ग्रिड () विधि का उपयोग कर सकते हैं और निम्नलिखित कदम उठा सकते हैं - आकृति का आकार सेट करें और सबप्लॉट के बीच और आसपास पैडिंग समायोजित करें। numpy का उपयोग करके t, s1, s2, nse, x, NEFT और Fs डेटा पॉइंट बनाएं। एक नया आंकड़ा बनाएं या सबप्

  1. सुडोकू ग्रिड को मान्य करने का कार्यक्रम पायथन में हल करने योग्य है या नहीं

    मान लीजिए हमारे पास एक 9×9 सुडोकू ग्रिड है। हमें यह देखना होगा कि यह वैध है या अभी। केवल भरे हुए कक्षों को निम्नलिखित नियमों के अनुसार सत्यापित करने की आवश्यकता है - प्रत्येक पंक्ति में बिना दोहराव के 1−9 के अंक होने चाहिए। प्रत्येक कॉलम में दोहराव के बिना 1−9 के अंक होने चाहिए। ग्रिड के 9

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

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