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

পাইথনে যাচাই করুন ম্যাট্রিক্স-এ বোমা দিয়ে সব শত্রু নিহত হয় কিনা

ধরুন, একটি ম্যাট্রিক্স mat দেওয়া আছে যাতে তিন ধরনের মান থাকে:

  • 0 = খালি জায়গা
  • 1 = বোমা
  • 2 = শত্রু

বোমা শুধু অনুভূমিক (horizontal) এবং লম্ব (vertical) দিকেই বিস্ফোরণ করে এক প্রান্ত থেকে অন্য প্রান্ত পর্যন্ত। আমাদের যাচাই করতে হবে যে সব শত্রু কি বোমা বিস্ফোরণে মারা যাবে।

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

0 0 2 0
0 1 0 0
0 2 0 0
0 0 1 0
আউটপুট হবে True, কারণ [1,1]-এ থাকা বোমা [2,1]-এ থাকা শত্রুকে এবং [3,2]-এ থাকা বোমা [0,2]-এ থাকা শত্রুকে মেরে ফেলবে।

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

  • r = len(mat) (রো), c = len(mat[0]) (কলাম)।
  • প্রতিটি সেল (i, j) এর জন্য:
    • যদি mat[i][j] == 1 (বোমা) হয়:
      • সেই কলাম j-এর সব সেল (x, j) যেটা বোমা নয়, সেগুলো 0 করুন (বিস্ফোরণ)۔
      • সেই রো i-এর সব সেল (i, y) যেটা বোমা নয়, সেগুলো 0 করুন।
  • শেষে পুরো ম্যাট্রিক্স স্ক্যান করুন। যদি কোথাও 2 (শত্রু) পাওয়া যায়, তবে False ফেরত দিন।
  • অন্যথায় True ফেরত দিন।

উদাহরণ কোড

def solve(mat):
    r = len(mat)
    c = len(mat[0])
    for i in range(r):
        for j in range(c):
            if mat[i][j] == 1:
                for x in range(r):
                    if mat[x][j] != 1:
                        mat[x][j] = 0
                for y in range(c):
                    if mat[i][y] != 1:
                        mat[i][y] = 0
    for i in range(r):
        for j in range(c):
            if mat[i][j] == 2:
                return False
    return True

matrix = [
    [0,0,2,0],
    [0,1,0,0],
    [0,2,0,0],
    [0,0,1,0]
]
print(solve(matrix))

ইনপুট

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

আউটপুট

True
  1. পাইথনে দুটি বাইনারি ট্রির সকল লেভেল যুগ्मানুকরণ (anagram) কিনা যাচাই

  2. পাইথন - তালিকার সব মান একটি দেওয়া মানের চেয়ে ছোট কিনা যাচাই করা

  3. পাইথনে চেক করা সব লিস্ট এলিমেন্ট একই কিনা

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