Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの塗りつぶし操作を使用して色で塗りつぶすプログラム


文字列「r」、「g」、および「b」として色を含む2Dグリッドがあるとします。カラーターゲットを使用して、行r、列cで塗りつぶし操作を実行する必要があります。フラッドフィル操作では、grid [r、c](上/右/下/左)に接続され、grid [r、c]と同じ色で、ターゲットと同じ色のすべての要素を置き換える必要があります。

したがって、入力が次のような場合

R R R
R G B
G B B

その場合、出力は次のようになります

G G G
G G B
G B B

grid [0,0]に接続されている赤いセルが緑( "g")に置き換えられるため。

これを解決するには、次の手順に従います-

  • 表示される新しいセットを定義する
  • oldcolor:=matrix [r、c]
  • 関数dfs()を定義します。これにはi、jが必要です
  • iとjが行列にあり、(i、j)が表示されず、matrix [i、j]がoldcolorと同じである場合、
    • 見たもののadd(i、j)
    • matrix [i、j]:=target
    • 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. PythonでOpenCVを使用して特定の色(ここでは青)を検出しますか?

    多くの人にとって、画像処理は恐ろしくて骨の折れる作業のように見えるかもしれませんが、多くの人が思っているほど難しくはありません。このチュートリアルでは、Pythonを使用してopenCvで基本的な色検出を行います。 コンピューターで色はどのように機能しますか? コンピューター上の色は、基本的に色の範囲を数字のタプルとして表す色空間またはカラーモデルで表します。 各色を使用する代わりに、使用する最も一般的な色空間について説明します。 RGB(赤、緑、青)およびHSV(色相、彩度、値)。 RGBは基本的に、色を3つのコンポーネントのタプルとして記述します。各コンポーネントは0〜255の値を取

  2. PythonでTkinterを使用したカラーゲーム

    GUIアプリケーションの開発では、tkinterは非常に人気があり簡単です。 tkinterを使用すると、GUIゲームを簡単に開発できます。 ここでもカラーゲームの開発を試みています。このゲームでは、プレーヤーは画面に表示される単語の色を入力する必要があるため、スコアが1つ増えます。このゲームをプレイする合計時間は、30秒で、このゲームで使用される色は、赤、青、緑、ピンク、ブラック、イエロー、オレンジ、ホワイト、パープル、ブラウン。インターフェイスには、さまざまな色の名前がさまざまな色で表示されます。ゲームに勝つには、ユーザーは色を識別し、正しい色の名前を入力する必要があります。 サンプルコ