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

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

একটি 2D ম্যাট্রিক্স mat দেওয়া আছে। ম্যাট্রিক্সের উপাদানগুলো স্পাইরাল বা বাঁকা পথে প্রিন্ট করতে হবে। প্রথম সারি, তারপর শেষ কলাম, তারপর শেষ সারি, তারপর প্রথম কলাম - এইভাবে বাঁকা পথে সব উপাদান ভিজিট করতে হবে।

উদাহরণ ম্যাট্রিক্সের আউটপুট: [7, 10, 9, 1, 3, 4, 5, 11, 9, 9, 2, 9, 6, 2, 9, 2, 1, 7]

সমাধানের ধাপসমূহ

  • top, down, left, right সীমা নির্ধারণ করুন
  • direction = 0 (ডান), 1 (নিচ), 2 (বাম), 3 (উপর)
  • যবত top <= down এবং left <= right:
    • direction অনুযায়ী সারি/কলাম ট্রাভার্স করুন
    • সীমা আপডেট করুন এবং direction = (direction+1)%4 করুন
  • ফলাফল তালিকা ফেরত দিন

উদাহরণ কোড

class Solution:
    def solve(self, matrix):
        top = 0
        down = len(matrix) - 1
        left = 0
        right = len(matrix[0]) - 1
        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. ম্যাট্রিক্সের বাউন্ডারি এলিমেন্টগুলোর যোগফল প্রিন্ট করার C প্রোগ্রাম

  2. সি প্রোগ্রামিং-এ O(1) এক্সট্রা স্পেসে n×n স্পাইরাল ম্যাট্রিক্স প্রিন্ট করা

  3. পাইথনে রো এবং কলাম ওয়াইজ সর্টেড ম্যাট্রিক্স থেকে সর্টেড অর্ডারে সব এলিমেন্ট প্রিন্ট করা

  4. পাইথন প্রোগ্রাম: ম্যাট্রিক্স Z আকারে প্রিন্ট করা