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

পাইথনে ফ্লাডফিল অপারেশন দিয়ে কালার ফিল করার প্রোগ্রাম


মান ল করুন একটি ২D গ্রিড যাতে "r", "g", "b" রং স্ট্রিং হিসেবে থাকে। row r, column c-এ target রং দিয়ে ফ্লাডফিল অপারেশন করতে হবে। ফ্লাডফিল অপারেশন grid[r,c]-এর সাথে কানেক্টেড (আপ/রাইট/ডাউন/লেফট) এবং grid[r,c]-এর মতো রং বিশিষ্ট সব এলিমেন্টকে target রং দিয়ে রিপ্লেস করবে।

যদি ইনপুট হয়:

RRR
RGB
GBB

তবে আউটপুট হবে:

GGG
GGB
GBB

কারণ grid[0,0]-এর সাথে কানেক্টেড লাল সেলগুলো সবুজ ("g") দিয়ে রিপ্লেস হয়েছে।

এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব:

  • একটি নতুন সেট seen সংজ্ঞায়িত করুন
  • oldcolor := matrix[r][c]
  • একটি dfs() ফাংশন সংজ্ঞায়িত করুন। এটি i, j গ্রহণ করবে।
  • যদি i, j ম্যাট্রিক্সের ভেতরে থাকে এবং (i, j) seen-এ নেই এবং matrix[i][j] == oldcolor, তবে:
    • (i, j) কে seen-এ যোগ করুন
    • matrix[i][j] := target
    • dfs(i+1, j), dfs(i, j+1), dfs(i, j-1), dfs(i-1, j) কল করুন
  • মূল মেথড থেকে: dfs(r, c) কল করুন, matrix ফেরত দিন।

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন:

উদাহরণ

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-এ কালার গেম তৈরি