কম্পিউটার

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


ধরুন আমাদের একটি 2D বাইনারি ম্যাট্রিক্স আছে যেখানে একটি 1 মানে একটি লাইভ সেল এবং 0 মানে একটি মৃত কোষ। একটি কোষের প্রতিবেশী হল এর অবিলম্বে অনুভূমিক, উল্লম্ব এবং তির্যক কোষ। আমাদের এই নিয়মগুলি ব্যবহার করে ম্যাট্রিক্সের পরবর্তী অবস্থা খুঁজে বের করতে হবে

  • দুই বা তিনজন জীবিত প্রতিবেশীর সাথে যেকোন জীবন্ত কোষ থাকে।

  • তিনটি জীবিত প্রতিবেশীর সাথে যে কোনও মৃত কোষ একটি জীবন্ত কোষে পরিণত হয়৷

  • অন্য সব কোষ মারা যায়।

সুতরাং, যদি ইনপুট মত হয়

1 1 0 0
0 1 0 0
0 1 0 1
1 1 0 1

তাহলে আউটপুট হবে

1 1 0 0
0 1 0 0
0 1 0 0
1 1 0 0

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:

  • n :=ম্যাট্রিক্সের সারির আকার, m :=ম্যাট্রিক্সের কলামের আকার

  • res :=n x m আকারের একটি ম্যাট্রিক্স, এবং 0

    দিয়ে পূরণ করুন
  • 0 থেকে n রেঞ্জের জন্য, করুন

    • 0 থেকে m রেঞ্জে j এর জন্য, করুন

      • s :=0

      • যদি ম্যাট্রিক্স[i, j] 0 এর মত হয়, তাহলে

        • k এর জন্য i - 1 থেকে i + 1 রেঞ্জে, করুন

          • অথবা h রেঞ্জ j - 1 থেকে j + 1, করুন

            • যদি 0 <=k

              • s :=s + ম্যাট্রিক্স[k, h]

        • res[i, j] :=[0, 1, সত্য যখন s 3 এর মত হয়]

      • অন্যথায়,

        • k এর জন্য i - 1 থেকে i + 1 রেঞ্জে, করুন

          • j - 1 থেকে j + 1 পরিসরে h এর জন্য, করুন

            • যদি 0 <=k

              • s :=s + ম্যাট্রিক্স[k, h]

        • যদি s হয় 3 বা 4, তাহলে

          • res[i, j] :=1

  • রিটার্ন রিটার্ন

আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:

উদাহরণ

class Solution:
   def solve(self, matrix):
      n, m = len(matrix), len(matrix[0])
      res = [[0 for j in range(m)] for i in range(n)]
      for i in range(n):
         for j in range(m):
            s = 0
            if matrix[i][j] == 0:
               for k in range(i - 1, i + 2):
                  for h in range(j - 1, j + 2):
                     if 0 <= k < n and 0 <= h < m:
                        s += matrix[k][h]
               res[i][j] = [0, 1][s == 3]
            else:
               for k in range(i - 1, i + 2):
                  for h in range(j - 1, j + 2):
                     if 0 <= k < n and 0 <= h < m:
                        s += matrix[k][h]
               if s in [3, 4]:
                  res[i][j] = 1
      return res

ob = Solution()
matrix = [
   [1, 1, 0, 0],
   [0, 1, 0, 0],
   [0, 1, 0, 1],
   [1, 1, 0, 1]
]

print(ob.solve(matrix))

ইনপুট

[[1, 1, 0, 0],
 [0, 1, 0, 0],
 [0, 1, 0, 1],
 [1, 1, 0, 1] ]

আউটপুট

[[1, 1, 0, 0],
 [0, 1, 0, 0],
 [0, 1, 0, 0],
 [1, 1, 0, 0]]

  1. পাইথনে বহুভুজের এলাকা খুঁজে বের করার জন্য প্রোগ্রাম

  2. পাইথনে বহুভুজের পরিধি খুঁজে বের করার প্রোগ্রাম

  3. একটি ম্যাট্রিক্সের স্থানান্তর খুঁজে পেতে পাইথন প্রোগ্রাম

  4. বাইনারি ম্যাট্রিক্সে ডুপ্লিকেট সারি খুঁজতে পাইথন প্রোগ্রাম লিখুন