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

পাইথনে বাইনারি ম্যাট্রিক্সে দ্বীপের পরিসীমা খুঁজে বের করার প্রোগ্রাম


ধরা যাক একটি বাইনারি ম্যাট্রিক্স আছে যেখানে 0 খালি কক্ষ এবং 1 ব্লক যা একটি আকৃতি তৈরি করে। আকৃতিতে কোনো গহ্বর নেই। আমাদের আকৃতির পরিসীমা খুঁজে বের করতে হবে।

উদাহরণ ম্যাট্রিক্স হলে আউটপুট 14।

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

  • d := 0, perimeter := 0
  • height := সারির সংখ্যা, length := কলামের সংখ্যা
  • প্রতিটি সারি (line) এবং সেটির প্রতিটি মান (val) için:
    • যদি val == 1 হয়, surround := 4
    • চারদিকে (ডান, বাম, নিচ, উপরে) সন্নিহিত 1 থাকলে surround ১ করে কমান।
    • perimeter += surround
  • perimeter ফেরত দিন।

উদাহরণ কোড

class Solution:
    def solve(self, matrix):
        d = 0
        perimeter = 0
        height = len(matrix)
        length = len(matrix[0])
        for line in matrix:
            c = 0
            for val in line:
                if val == 1:
                    surround = 4
                    if c != length - 1:
                        if matrix[d][c + 1] == 1:
                            surround -= 1
                    if c != 0:
                        if matrix[d][c - 1] == 1:
                            surround -= 1
                    if d != height - 1:
                        if matrix[d + 1][c] == 1:
                            surround -= 1
                    if d != 0:
                        if matrix[d - 1][c] == 1:
                            surround -= 1
                    perimeter += surround
                c += 1
            d += 1
        return perimeter

ob = Solution()
matrix = [
    [0,0,0,0,0],
    [0,0,1,1,1],
    [0,0,1,1,0],
    [0,1,1,1,0],
    [0,0,0,0,0]
]
print(ob.solve(matrix))

ইনপুট

matrix = [ [0,0,0,0,0], [0,0,1,1,1], [0,0,1,1,0], [0,1,1,1,0], [0,0,0,0,0] ]

আউটপুট

14
  1. পাইথনে ম্যাট্রিক্সের ট্রান্সপোজ বের করা

  2. পাইথনে অ্যারের যোগফল বের করা

  3. পাইথনে সিলিন্ডারের পরিধি বের করার প্রোগ্রাম

  4. পাইথন প্রোগ্রাম: সিলিন্ডারের পেরিমিটার বের করা