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

जांचें कि क्या मैट्रिक्स को पायथन में वर्ग उप-मैट्रिस को स्थानांतरित करके दूसरे मैट्रिक्स में परिवर्तित किया जा सकता है

मान लीजिए हमारे पास दो N X M हैं जिन्हें mat1 और mat2 कहा जाता है। एक ऑपरेशन में, हम किसी भी वर्ग उप-मैट्रिक्स को mat1 में स्थानांतरित कर सकते हैं। हमें यह जांचना है कि दिए गए ऑपरेशन को करके हम mat1 से mat2 प्राप्त कर सकते हैं या नहीं।

तो, अगर इनपुट पसंद है

5 6 7
1 2 3
6 8 9


5 6 2
1 7 3
6 8 9

तो आउटपुट ट्रू होगा, क्योंकि अगर हमें मैट 1 के आकार 2x2 के टॉप राइट सब-मैट्रिक्स का स्थानान्तरण मिलता है, तो हमें मैट 2 मिलेगा।

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

  • पंक्ति :=आव्यूहों की पंक्ति संख्या
  • स्तंभ :=आव्यूहों की स्तंभ संख्या
  • मैं के लिए 0 से पंक्ति -1 की सीमा में, करो
    • temp1:=एक नई सूची, temp2:=एक नई सूची
    • r :=i, col :=0
    • जबकि r>=0 और col <कॉलम, करें
      • temp1 में mat1[r, col] डालें
      • temp2 में mat2[r, col] डालें
      • r :=r-1, col :=col + 1
    • सूची temp1 और temp2 क्रमबद्ध करें
    • मैं के लिए 0 से लेकर temp1-1 के आकार के बीच में
      • यदि temp1[i], temp2[i] के समान नहीं है, तो
        • झूठी वापसी
  • जे के लिए श्रेणी 1 से कॉलम -1 तक, करें
    • temp1:=एक नई सूची, temp2:=एक नई सूची
    • r :=row-1, col:=j
    • जबकि r>=0 और col <कॉलम, करें
      • temp1 में mat1[r, col] डालें
      • temp2 में mat2[r, col] डालें
      • r :=r-1, col :=col + 1
    • सूची temp1 और temp2 क्रमबद्ध करें
    • i के लिए 0 से लेकर temp1-1 के आकार तक के लिए
      • यदि temp1[i], temp2[i] के समान नहीं है, तो
        • झूठी वापसी
  • सही लौटें

उदाहरण

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

def solve(mat1, mat2):
   row = len(mat1)
   column = len(mat1[0])
   for i in range(row):
      temp1 = []
      temp2 = []
      r = i
      col = 0
      while r >= 0 and col < column:
         temp1.append(mat1[r][col])
         temp2.append(mat2[r][col])
         r -= 1
         col += 1
      temp1.sort()
      temp2.sort()
      for i in range(len(temp1)):
         if temp1[i] != temp2[i]:
            return False
   for j in range(1, column):
      temp1 = []
      temp2 = []
      r = row - 1
      col = j
      while r >= 0 and col < column:
         temp1.append(mat1[r][col])
         temp2.append(mat2[r][col])
         r -= 1
         col += 1
      temp1.sort()
      temp2.sort()
      for i in range(len(temp1)):
         if temp1[i] != temp2[i]:
            return False
   return True
mat1 = [
      [5, 6, 7],
      [1, 2, 3],
      [6, 8, 9]]
mat2 = [
      [5, 6, 2],
      [1, 7, 3],
      [6, 8, 9]]
print(solve(mat1, mat2))

इनपुट

[
   [5, 6, 7],
   [1, 2, 3],
   [6, 8, 9]],
[
   [5, 6, 2],
   [1, 7, 3],
   [6, 8, 9]]

आउटपुट

True

  1. यह जांचने के लिए कार्यक्रम कि हम कितने तरीकों से अजगर में एक मैट्रिक्स की खाली कोशिकाओं को चुन सकते हैं

    मान लीजिए कि हमारे पास एक एन एक्स एन बाइनरी मैट्रिक्स है जहां 0 खाली कोशिकाओं के लिए है और 1 एक अवरुद्ध सेल है, हमें एन खाली कोशिकाओं को चुनने के तरीकों की संख्या का पता लगाना होगा जैसे कि प्रत्येक पंक्ति और प्रत्येक कॉलम में कम से कम एक चुना हुआ सेल हो। यदि उत्तर बहुत बड़ा है तो वापसी परिणाम मॉड 10

  1. मैं कैसे जांच सकता हूं कि ए पाइथन में बी का सुपरक्लास है या नहीं?

    हमारे पास वर्ग ए और बी निम्नानुसार परिभाषित हैं - class A(object): pass class B(A): pass उदाहरण A को दो तरीकों से B का सुपर क्लास साबित किया जा सकता है class A(object):pass class B(A):pass print issubclass(B, A) # Here we use the issubclass() method to check if B is subclass of A print B.__bases__

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

    स्ट्रिंग को फ़्लोट करने के लिए पार्स करने के लिए, आप निम्न का उपयोग कर सकते हैं: try:     print float('112.15') except ValueError:     print 'Cannot parse' यह आपको आउटपुट देगा: 112.15 अगर आपकी स्ट्रिंग को पार्स नहीं किया जा सकता है, तो यह एक वैल्यू एरर देगा। आप