#99 Article 171 Posted at 1992/02/17 13:57:57 by おちゃ (MAP1512) [PAINT]

Subject: Re:*4 領域ペイント /170 ... /167 /164

再帰的定義通りですと、VRAMが [0..XMAX, 0..YMAX] の2次元配列として、
色 color で囲まれた領域を同じ色で塗りつぶすとき、以下のようになります。

procedure paint(x, y : integer);	(* 塗りつぶし *)
  begin
    if (0 <= x) and (x <= XMAX) and (0 <= y) and (y <= YMAX) (* 範囲`ェック *)
       and (VRAM[x, y] <> color) then	(* まだ塗ってない点かしら? *)
      begin
        VRAM[x, y] := color;	(* その点を塗って *)
        paint(x-1, y);
        paint(x+1, y);
        paint(x, y-1);
        paint(x, y+1)		(* 回りを見回す *)
      end
  end;

でもこれはスタックがあふれるし、無駄が多すぎるので、普通使いません。(^^;
実用的になるよう工夫を凝らしたのが、ちゃい大先生のプログラムです。

	でも、このアルゴリズムは並列処理に有効ですねん		おちゃ