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

পাইথনে সারাউন্ডেড রিজন সমস্যা সমাধান

একটি ২D বোর্ড দেওয়া আছে যাতে 'X' এবং 'O' আছে। 'X' দিয়ে ঘেরা সকল রিজন ক্যাপচার করতে হবে। একটি রিজন ক্যাপচার মানে সেটির সব 'O' কে 'X' তে কনভার্ট করা।

ইনপুট: X X X X X O O X X X O X X O X X

আউটপুট: X X X X X X X X X X X X X O X X

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

  • যদি বোর্ড খালি হয়, খালি বোর্ড রিটার্ন
  • প্রতিটি রো i-এর জন্য:
    • যদি board[i][0] == 'O': make_one(board, i, 0)
    • যদি board[i][cols-1] == 'O': make_one(board, i, cols-1)
  • প্রতিটি কলাম j-এর জন্য:
    • যদি board[0][j] == 'O': make_one(board, 0, j)
    • যদি board[rows-1][j] == 'O': make_one(board, rows-1, j)
  • সব সেলের জন্য:
    • যদি board[i][j] == 'O': 'X' করুন, অন্যথায় '1' হলে 'O' করুন
  • make_one ফাংশন:
    • বাউন্ডারি চেক, 'X' বা '1' হলে রিটার্ন
    • board[i][j] = '1'
    • চার দিকেই রিকারসিভ কল

উদাহরণ

class Solution(object):
    def solve(self, board):
        if not board:
            return board
        for i in range(len(board)):
            if board[i][0] == 'O':
                self.make_one(board, i, 0)
            if board[i][len(board[0])-1] == 'O':
                self.make_one(board, i, len(board[0])-1)
        for i in range(len(board[0])):
            if board[0][i] == 'O':
                self.make_one(board, 0, i)
            if board[len(board)-1][i] == 'O':
                self.make_one(board, len(board)-1, i)
        for i in range(len(board)):
            for j in range(len(board[i])):
                if board[i][j] == 'O':
                    board[i][j] = 'X'
                elif board[i][j] == '1':
                    board[i][j] = 'O'
        return board

    def make_one(self, board, i, j):
        if i < 0 or j < 0 or i >= len(board) or j >= len(board[0]) or board[i][j] == 'X' or board[i][j] == '1':
            return
        board[i][j] = '1'
        self.make_one(board, i+1, j)
        self.make_one(board, i-1, j)
        self.make_one(board, i, j+1)
        self.make_one(board, i, j-1)

ob1 = Solution()
print(ob1.solve([["X","X","X","X"],["X","O","O","X"],["X","X","O","X"],["X","O","X","X"]]))

ইনপুট

[["X","X","X","X"],["X","O","O","X"],["X","X","O","X"],["X","O","X","X"]]

আউটপুট

[['X', 'X', 'X', 'X'], ['X', 'X', 'X', 'X'], ['X', 'X', 'X', 'X'], ['X', 'O', 'X', 'X']]
  1. পাইথনে ম্যাট্রিক্সে ঘিরা দ্বীপের সংখ্যা গণনা করার প্রোগ্রাম

  2. পাইথনে issuperset() ফাংশন

  3. পাইথনে আন্ডারস্কোর (_) এর ব্যবহার

  4. পাইথনে Quine প্রোগ্রাম (স্ব-প্রजनনকারী কোড)