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

পাইথনে বোমা বিস্ফোরণ সময় নিরাপদ জায়গার সংখ্যা বের করার প্রোগ্রাম

ধরা যাক একটি ২D বাইনারি ম্যাট্রিক্স রয়েছে, যেখানে ১ বোমা এবং ০ খালি সেল বোঝায়। যখন একটি বোমা বিস্ফোরিত হয়, তখন সেই সারি এবং কলামের সব সেল ক্ষতিগ্রস্ত হয়। আমাদের কতগুলো সেলে দাঁড়াতে পারি যাতে ক্ষতিগ্রস্ত না হই তা বের করতে হবে।

উদাহরণ

ইনপুট ম্যাট্রিক্স:

110
000
000

আউটপুট: 2

ব্যাখ্যা: নিচের ডান কোণার সেল এবং মাঝের ডান সেল—এই দুটি জায়গা নিরাপদ।

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

  1. r := ম্যাট্রিক্সের সারি সংখ্যা পরিমাণের একটি লিস্ট False দিয়ে ভরা
  2. c := ম্যাট্রিক্সের কলাম সংখ্যা পরিমাণের একটি লিস্ট False দিয়ে ভরা
  3. i = 0 থেকে রো কাউন্ট-১ পর্যন্ত লুপ চালান
  4. j = 0 থেকে কলাম কাউন্ট-১ পর্যন্ত লুপ চালান
  5. যদি matrix[i][j] == 1 হয়, তবে:
    • r[i] := True, c[j] := True
  6. ct := 0
  7. আবার সারি এবং কলামের সব সেল ঘুরে:
    • যদি r[i] == False এবং c[j] == False হয়, তবে ct := ct + 1
  8. ct ফেরত দিন

পাইথন ইমপ্লিমেন্টেশন

class Solution:
    def solve(self, matrix):
        r = [False for _ in range(len(matrix))]
        c = [False for _ in range(len(matrix[0]))]
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if matrix[i][j] == 1:
                    r[i] = True
                    c[j] = True
        ct = 0
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if r[i] == False and c[j] == False:
                    ct += 1
        return ct

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

ইনপুট

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

আউটপুট

2
  1. পাইথনে বাইনারি ম্যাট্রিক্সে কলাম ফ্লিপ করে সর্বাধিক সমান সারি পাওয়ার প্রোগ্রাম

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

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

  4. পাইথনে লিস্ট থেকে সর্বোচ্চ সংখ্যা বের করা