একটি ২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']]