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

अजगर में सर्पिल क्रम में मैट्रिक्स तत्वों को मुद्रित करने का कार्यक्रम

मान लीजिए कि हमारे पास 2D मैट्रिक्स मैट है। हमें मैट्रिक्स तत्वों को सर्पिल तरीके से प्रिंट करना होगा। सबसे पहले पहली पंक्ति (mat[0, 0]) से शुरू करते हुए, पूरी सामग्री को प्रिंट करें और फिर प्रिंट करने के लिए अंतिम कॉलम का अनुसरण करें, फिर अंतिम पंक्ति, और इसी तरह, इस प्रकार यह तत्वों को एक सर्पिल फैशन में प्रिंट करता है।

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

7
10
9
2
9
1
6
2
3
9
1
4
2
7
5
9
9
11

तो आउटपुट [7, 10, 9, 1, 3, 4, 5, 11, 9, 9, 2, 9, 6, 2, 9, 2, 1, 7]

होगा।

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

  • घ :=0
  • शीर्ष:=0, नीचे:=मैट्रिक्स की पंक्ति गणना – 1, बाएँ:=0, दाएँ:=मैट्रिक्स की स्तंभ संख्या – 1
  • सी :=0
  • res :=एक नई सूची
  • दिशा:=0
  • जबकि ऊपर <=नीचे और बाएँ <=दाएँ, करें
    • यदि दिशा 0 के समान है, तो
      • मैं के लिए बाएं से दाएं + 1 की सीमा में, करो
        • मैट्रिक्स[टॉप, i] को रेस में डालें
      • शीर्ष:=शीर्ष + 1
    • यदि दिशा 1 के समान है, तो
      • i के लिए ऊपर से नीचे + 1 की श्रेणी में, करें
        • मैट्रिक्स[i, दाएं] को रेस में डालें
      • दाएं:=दाएं - 1
    • यदि दिशा 2 के समान है, तो
      • मेरे लिए दाएं से बाएं -1 की सीमा में, 1 से घटाएं
        • मैट्रिक्स[डाउन, i] को रेस में डालें
      • नीचे:=नीचे - 1
    • यदि दिशा 3 के समान है, तो
      • मेरे लिए नीचे से ऊपर तक -1 की श्रेणी में, 1 से घटाएं
        • मैट्रिक्स[i, लेफ्ट] को रेस में डालें
      • बाएं:=बाएं + 1
  • दिशा:=(दिशा + 1) मॉड 4
  • रिटर्न रेस

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

उदाहरण

class Solution:
   def solve(self, matrix):
      d = 0
      top = 0
      down = len(matrix) - 1
      left = 0
      right = len(matrix[0]) - 1
      c = 0
      res = []
      direction = 0
      while top <= down and left <= right:
         if direction == 0:
            for i in range(left, right + 1):
               res.append(matrix[top][i])
               top += 1

         if direction == 1:
            for i in range(top, down + 1):
               res.append(matrix[i][right])
            right -= 1

         if direction == 2:
            for i in range(right, left - 1, -1):
               res.append(matrix[down][i])
            down -= 1

         if direction == 3:
            for i in range(down, top - 1, -1):
               res.append(matrix[i][left])
            left += 1

         direction = (direction + 1) % 4
      return res

ob = Solution()
matrix = [
   [7, 10, 9],
   [2, 9, 1],
   [6, 2, 3],
   [9, 1, 4],
   [2, 7, 5],
   [9, 9, 11]
]
print(ob.solve(matrix))

इनपुट

[    
[7, 10, 9],    

[2, 9, 1],    

[6, 2, 3],    

[9, 1, 4],    

[2, 7, 5],    

[9, 9, 11]

]

आउटपुट

[7, 10, 9, 1, 3, 4, 5, 11, 9, 9, 2, 9, 6, 2, 9, 2, 1, 7]

  1. सी कार्यक्रम एक मैट्रिक्स के सीमा तत्वों के योग को मुद्रित करने के लिए

    मैट्रिक्स को देखते हुए, हमें मैट्रिक्स के सीमा तत्वों को प्रिंट करना होगा और उनका योग प्रदर्शित करना होगा। उदाहरण नीचे दिए गए मैट्रिक्स को देखें - दिए गए मैट्रिक्स 1 2 3 4 5 6 7 8 9 सीमा मैट्रिक्स 1 2 3 4   6 7 8 9 सीमा तत्वों का योग:1 + 2 + 3 + 4 + 6 + 7 + 8 + 9 =40 सीमा मैट्रिक्स का योग ज्

  1. C प्रोग्राम में O(1) अतिरिक्त स्थान का उपयोग करके n x ​​n सर्पिल मैट्रिक्स प्रिंट करें।

    हमें एक धनात्मक पूर्णांक n दिया गया है और n x n का एक सर्पिल मैट्रिक्स बनाते हैं, केवल O(1) अतिरिक्त स्थान का उपयोग करके दक्षिणावर्त दिशा में सर्पिल मैट्रिक्स एक मैट्रिक्स है जो एक सर्पिल की तरह काम करता है जो एक सर्कल की उत्पत्ति से शुरू होगा और दक्षिणावर्त फैशन में घूमता है। तो कार्य 2 → 4 → 6 →

  1. जेड फॉर्म में मैट्रिक्स प्रिंट करने के लिए पायथन प्रोग्राम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन क्रम n*n के वर्ग मैट्रिक्स को देखते हुए, हमें मैट्रिक्स के तत्वों को Z रूप में प्रदर्शित करने की आवश्यकता है। Z फॉर्म निम्नलिखित चरणों में मैट्रिक्स को पार कर रहा है - पहली पंक्ति को पार करें अब