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

पायथन में जांचें कि मैट्रिक्स में बम रखकर सभी दुश्मन मारे जा सकते हैं या नहीं

मान लीजिए हमारे पास एक मैट्रिक्स mat है। मैट्रिक्स के सेल निम्न तीन मानों में से कोई भी रख सकते हैं:

  • 0 - खाली क्षेत्र
  • 1 - बम
  • 2 - दुश्मन

बम केवल क्षैतिज और लंबवत दिशाओं में एक छोर से दूसरे छोर तक विस्फोट कर सकता है। हमें यह जांचना है कि क्या बम विस्फोट होने पर सभी दुश्मन मारे जाएंगे या नहीं।

उदाहरण के लिए, यदि इनपुट है:

0020
0100
0200
0010

तो आउटपुट True होगा, क्योंकि स्थान [1, 1] पर बम स्थान [2, 1] पर दुश्मन को मार सकता है और स्थान [0, 2] पर दुश्मन स्थान [3, 2] पर रखे बम से मारा जाएगा।

समाधान दृष्टिकोण

हम प्रत्येक बम के लिए उसकी पूरी पंक्ति और स्तंभ को स्कैन करते हैं (अन्य बमों को छोड़कर) और सभी सेल्स को 0 (सुरक्षित) पर सेट करते हैं। अंत में जांचते हैं कि क्या कोई दुश्मन (2) बचा है।

एल्गोरिदम चरण:

  1. r = पंक्तियों की संख्या, c = स्तंभों की संख्या
  2. प्रत्येक सेल mat[i][j] के लिए:
    • यदि यह बम (1) है:
      • पूरे स्तंभ j को स्कैन करें: यदि सेल बम नहीं है, तो उसे 0 पर सेट करें
      • पूरी पंक्ति i को स्कैन करें: यदि सेल बम नहीं है, तो उसे 0 पर सेट करें
  3. पूरे मैट्रिक्स को स्कैन करें: यदि कोई सेल 2 (दुश्मन) है, तो False लौटाएं
  4. True लौटाएं

पायथन कार्यान्वयन

def solve(mat):
    r = len(mat)
    c = len(mat[0])
    
    for i in range(r):
        for j in range(c):
            if mat[i][j] == 1:
                # पूरा स्तंभ स्कैन करें
                for x in range(r):
                    if mat[x][j] != 1:
                        mat[x][j] = 0
                # पूरी पंक्ति स्कैन करें
                for y in range(c):
                    if mat[i][y] != 1:
                        mat[i][y] = 0
    
    # जांचें कि कोई दुश्मन बचा है या नहीं
    for i in range(r):
        for j in range(c):
            if mat[i][j] == 2:
                return False
    return True

matrix = [
    [0, 0, 2, 0],
    [0, 1, 0, 0],
    [0, 2, 0, 0],
    [0, 0, 1, 0]
]
print(solve(matrix))  # True

इनपुट

[ [0,0,2,0], [0,1,0,0], [0,2,0,0], [0,0,1,0] ]

आउटपुट

True

नोट:

यह एल्गोरिदम मूल मैट्रिक्स को मॉडिफाई करता है। यदि मूल मैट्रिक्स सुरक्षित रखना है, तो डीप कॉपी बनाएं।

  1. पायथन में जांचें कि दो ट्री के सभी लेवल एनाग्राम हैं या नहीं पायथन में जांचें कि दो ट्री के सभी लेवल एनाग्राम हैं या नहीं

    मान लीजिए, हमें दो बाइनरी ट्री प्रदान किए गए हैं। हमें यह जांचना है कि एक बाइनरी ट्री का प्रत्येक लेवल दूसरे बाइनरी ट्री के उसी लेवल का एनाग्राम है या नहीं। यदि यह एनाग्राम है तो हम True वापस करते हैं, अन्यथा False वापस करते हैं। इसलिए, यदि इनपुट इस तरह है: तो आउटपुट True होगा। इसे हल करने के लिए

  1. - पायथन - जांचें कि लिस्ट में सभी तत्व समान हैं या नहीं

    कभी-कभी हमें यह जांचने की आवश्यकता होती है कि क्या लिस्ट में एक ही मान सभी तत्वों के रूप में दोहराया गया है। हम नीचे दिए गए पायथन प्रोग्राम का उपयोग करके ऐसे परिदृश्य की जांच कर सकते हैं। अलग-अलग दृष्टिकोण हैं। for लूप का उपयोग इस विधि में हम लिस्ट से पहला तत्व लेते हैं और पारंपरिक for लूप का उपयोग

  1. - पायथन प्रोग्राम: चेक करना कि दो दी गई मैट्रिक्स आइडेंटिकल हैं या नहीं

    यहां दो मैट्रिक्स दी गई हैं। दोनों मैट्रिक्स का ऑर्डर समान है। आइडेंटिकल होने के लिए दोनों मैट्रिक्स बराबर होनी चाहिए, दोनों मैट्रिक्स में पंक्तियों और कॉलम की संख्या समान होनी चाहिए और संबंधित एलिमेंट्स भी समान होने चाहिए।एल्गोरिदमचरण 1: दो मैट्रिक्स बनाएं। चरण 2: फिर पहली मैट्रिक्स और दूसरी मैट्रि