কম্পিউটার

বেষ্টিত অঞ্চল পাইথন


ধরুন আমাদের কাছে X এবং O সম্বলিত একটি 2D বোর্ড রয়েছে। X দ্বারা বেষ্টিত সমস্ত অঞ্চলকে ক্যাপচার করুন। একটি অঞ্চলকে সেই বেষ্টিত অঞ্চলের সমস্ত Os-কে Xs-এ পরিবর্তন করে ক্যাপচার করা হয়েছে।

X X X X
X X
X X X
X X X

রান করার পর আউটপুট হবে

X X X X
X X X X
X X X X
X X X

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

  • যদি বোর্ড উপস্থিত না থাকে, তাহলে ফাঁকা বোর্ড ফেরত দিন

  • 0 থেকে সারির সংখ্যা - 1 −

    এর মধ্যে i এর জন্য
    • যদি বোর্ড[i, 0] ='O', তাহলে make_one(board, i, 0)

    • যদি বোর্ড[i, সারির দৈর্ঘ্য - 1] ='O' হয়, তাহলে make_one(বোর্ড, i, সারির দৈর্ঘ্য - 1)

  • i এর জন্য 0 থেকে কলের সংখ্যা - 1 −

    • যদি বোর্ড[0, i] ='O', তাহলে make_one(বোর্ড, 0, i)

    • যদি বোর্ড [সারির সংখ্যা - 1, i] ='O' হয়, তাহলে make_one(বোর্ড, সারির সংখ্যা - 1, i)

  • আমি 0 থেকে সারির সংখ্যার মধ্যে

    • j এর জন্য রেঞ্জ 0 থেকে কলের সংখ্যা

      • যদি বোর্ড[i, j] ='O', তাহলে board[i, j] ='X', অন্যথায় 1, board[i, j] ='O'

  • make_one হবে −

    এর মত
  • যদি i <0 বা j <0 বা i>=সারি গণনা বা j>=কল গণনা বা বোর্ড[i, j] ='X' বা বোর্ড [i, j] ='1' হয়, তাহলে ফিরে আসুন

  • বোর্ড[i, j] :=1

  • make_one(voard, i + 1, j), make_one(voard, i - 1, j), make_one(voard, i, j + 1), make_one(voard, i, j - 1)

উদাহরণ

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

class Solution(object):
   def solve(self, board):
      """
      :type board: List[List[str]]
      :rtype: None Do not return anything, modify board in-place instead.
      """
      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'
   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)

ইনপুট

[["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. পাইথনে একটি বোর্ডকে বর্গাকারে কাটতে ন্যূনতম খরচ

  3. issuperset() পাইথনে

  4. পাইথনে কুইন