[戻る]
記事No.6633を表示します。
  ☆Re: お絵描きロジックのプログラム... 投稿者アルゴリズム  ID:cySXE  
左詰めデータ作成手順(塗りつぶし開始位置データ作成。右詰めは左詰めの逆なので省きます)
[初期値設定]:確定マスの存在を無視した左詰めデータを作る。m1-1,m2+1は欄外位置(x1-1,x2+1)とする。
[手順@]:鍵番号をm2→m1の順に左詰めデータの矛盾チェック。              (右詰めではm1→m2の順)
 [手順@-1]外チェック:範囲外に■があるか、x位置をx2方向からx1方向に向かってチェック(右詰めではx1方向→x2方向)
            ■があれば矛盾なので塗りつぶし開始位置を矛盾の無い位置に変更 (■が範囲内となる最も左の位置)
            (複数の■があっても最初に見つけた■位置に対して変更処理)
 [手順@-2]内チェック:範囲内に□があるか、x位置をx2方向からx1方向に向かってチェック(右詰めではx1方向→x2の方向)
            □があれば矛盾なので塗りつぶし開始位置を矛盾の無い位置に変更 (□位置+1に変更)
            (複数の□があっても最初に見つけた□位置に対して変更処理)
 (注)上記チェックでは違う鍵番号で塗りつぶし範囲が重複することがありますが、とりあえず無視
[手順A]:鍵番号m1→m2の順に塗りつぶし範囲の重複や空白無しをチェック。(右詰めではm2→m1の順)
     重複などがあれば1つ後ろの鍵の塗りつぶし開始位置を重複などの無い位置に変更
[手順B]:手順@,Aで塗りつぶし開始位置を変更した場合は手順@に戻る
[矛盾チェック]:塗りつぶし範囲が欄外となれば矛盾です。これは、そもそも問題が成立していないか、どこかの過程での仮置き(仮定)が誤りだった場合に生じます。手順@-2およびAで塗りつぶし開始位置を変更した場合はチェックが必要です。

左詰めと右詰めは同一ルーチンを使用しています。プログラムは■□判定の5行を含め約35行ほどでした。
以上が説明の全てです。次は具体例などの補足説明になります。       《つづく(次回最終)》
... 2024/02/02(Fri) 23:11 No.6633  


[ALL]お絵描きロジックのプログラムでの... by アルゴリズム
    Re: お絵描きロジックのプログラム... by アルゴリズム
    Re: お絵描きロジックのプログラム... by アルゴリズム
    Re: お絵描きロジックのプログラム... by アルゴリズム
    Re: お絵描きロジックのプログラム... by アルゴリズム
    Re: お絵描きロジックのプログラム... by アルゴリズム
>>Re: お絵描きロジックのプログラム... by アルゴリズム
    Re: お絵描きロジックのプログラム... by アルゴリズム