কম্পিউটার

পাইথনে ফ্লাডফিল অপারেশন ব্যবহার করে রঙ পূরণ করার প্রোগ্রাম


ধরুন আমাদের একটি 2D গ্রিড আছে, যেখানে স্ট্রিং "r", "g", এবং "b" হিসাবে রঙ রয়েছে। আমাদের কালার টার্গেট সহ সারি r, কলাম c-এ ফ্লাডফিল অপারেশন করতে হবে। আমরা জানি যে ফ্লাডফিল অপারেশনের সমস্ত উপাদানগুলিকে প্রতিস্থাপন করা উচিত যেগুলি উভয়ই গ্রিড[r,c] (উপর/ডান/নিচে/বাম) এর সাথে সংযুক্ত এবং লক্ষ্যের মতো একই রঙের সাথে গ্রিড[r,c] এর মতো একই রঙ রয়েছে।

সুতরাং, যদি ইনপুট মত হয়

R R R
R G B
G B B

তাহলে আউটপুট হবে

G G G
G G B
G B B

যেহেতু গ্রিড[0,0]-এর সাথে সংযুক্ত লাল কোষগুলিকে সবুজ ("g") দিয়ে প্রতিস্থাপিত করা হয়।

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

  • দেখা একটি নতুন সেট সংজ্ঞায়িত করুন
  • পুরানো রং :=ম্যাট্রিক্স[r, c]
  • একটি ফাংশন dfs() সংজ্ঞায়িত করুন। এর জন্য i, j
  • লাগবে
  • যদি ম্যাট্রিক্সে i এবং j থাকে এবং (i, j) দেখা না হয় এবং ম্যাট্রিক্স[i, j] পুরানো রঙের মতো হয়, তাহলে
    • দেখার যোগ(i, j)
    • ম্যাট্রিক্স[i, j] :=টার্গেট
    • dfs(i + 1, j)
    • dfs(i, j + 1)
    • dfs(i, j - 1)
    • dfs(i - 1, j
  • প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
  • dfs(r, c)
  • রিটার্ন ম্যাট্রিক্স

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

উদাহরণ

class Solution:
   def solve(self, matrix, r, c, target):
      def dfs(i, j):
         if (
            i >= 0
            and i < len(matrix)
            and j >= 0
            and j < len(matrix[0])
            and (i, j) not in seen
            and matrix[i][j] == oldcolor
         ):
            seen.add((i, j))
            matrix[i][j] = target
            dfs(i + 1, j)
            dfs(i, j + 1)
            dfs(i, j - 1)
            dfs(i - 1, j)
      seen = set()
      oldcolor = matrix[r][c]
      dfs(r, c)
      return matrix
ob = Solution()
matrix = [ ["r", "r", "r"], ["r", "g", "b"], ["g", "b", "b"] ]
r = 0
c = 0
target = "g"
print(ob.solve(matrix, r, c, target))

ইনপুট

matrix = [
["r", "r", "r"],
["r", "g", "b"],
["g", "b", "b"] ]
r = 0
c = 0
target = "g"

আউটপুট

[ ['g', 'g', 'g'], ['g', 'g', 'b'], ['g', 'b', 'b']]

  1. পাইথন ব্যবহার করে সর্বাধিক সম্ভাব্যতার সাথে পথ খুঁজে বের করার প্রোগ্রাম

  2. পাইথন ব্যবহার করে একটি চেসবোর্ড স্কোয়ারের রঙ নির্ধারণ করার জন্য প্রোগ্রাম

  3. পাইথনের সাথে OpenCV ব্যবহার করে একটি নির্দিষ্ট রঙ (এখানে নীল) সনাক্তকরণ?

  4. পাইথনে Tkinter ব্যবহার করে রঙিন খেলা