কম্পিউটার টিউটোরিয়াল

পাইথনে স্পাইরাল ম্যাট্রিক্স II


मान लीजिए हमारे पास एक धनात्मक पूर्णांक n है, हमें n² तत्वों के साथ स्पाइरल क्रम में एक वर्ग मैट्रिक्स उत्पन्न करना है। इसलिए यदि n = 4, तो मैट्रिक्स होगा −

1234
1213145
1116156
10987

चरण देखते हैं −

  • (row1, col1) := (0, 0) और (row2, col2) := (n, n) सेट करें, और res नामक एक मैट्रिक्स बनाएं, फिर इसे 0 से भरें, और num := 1 सेट करें
  • जब तक num <= n²
    • i के लिए col1 से col2 रेंज में
      • res[row1, i] = num, num को 1 से बढ़ाएं
      • यदि num > n², तो ब्रेक करें
    • i के लिए row1 + 1 से row2 रेंज में
      • res[i, col2-1] = num, num को 1 से बढ़ाएं
      • यदि num > n², तो ब्रेक करें
    • i के लिए col2 - 2 से col1 - 1 तक नीचे की ओर
      • res[row2 - 1, i] = num, num को 1 से बढ़ाएं
      • यदि num > n², तो ब्रेक करें
    • i के लिए row2 - 2 से row1 तक नीचे की ओर
      • res[i, col1] = num, num को 1 से बढ़ाएं
    • row1 को 1 से बढ़ाएं, row2 को 1 से घटाएं, col1 को 1 से बढ़ाएं और col2 को 1 से घटाएं
  • res लौटाएं

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

उदाहरण

class Solution(object):    def generateMatrix(self, n):       row1 = 0       col1 = 0       row2 = n       col2 = n       result = [ [0 for i in range(n)] for j in range(n)]       num = 1       while num<=n**2:          for i in range(col1,col2):             result[row1][i] = num             num+=1          if num > n**2:             break          for i in range(row1+1,row2):             result[i][col2-1] = num             num+=1          if num > n**2:             break          for i in range(col2-2,col1-1,-1):             result[row2-1][i] = num             num+=1          if num > n**2:             break          for i in range(row2-2,row1,-1):             result[i][col1] = num             num+=1             row1+=1             row2-=1             col1+=1             col2-=1             #print(result)       return result ob1 = Solution() print(ob1.generateMatrix(4))

इनपुट

4

आउटपुट

[[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]

  1. পাইথনে ইমেজ রোটেট করা

  2. পাইথনে প্লাস ওয়ান (Plus One)

  3. পাইথনে ম্যাট্রিক্স ইনিশিয়ালাইজেশন (Initialize Matrix)

  4. পাইথনে ম্যাট্রিক্স ট্রান্সপোজ (Transpose) করা