四角に切れ自動生成の動作概要

自動生成の動作概要です。はっきりいってかなりしょぼいです。
今回は本当になんでもないことしかしてなく、ソルバーの延長上でしかない作り方をしています。

  1. まずは入力された問題のうち確定するところまでを解きます。
    1. 確定するところを決める方法その1:ある数字を含む四角が必ず含むマスがあるなら、そのマスを含むようにその数字を含む四角を拡大する。これをすでに値が入っている数字を含む四角に対して行う。
    2. 確定するところを決める方法その2:あるマスに対してそのマスを含むことが出来る四角がひとつしかない場合、そのマスを含むようにそのマスを含むことの出来る四角を拡大する。
    3. この2つの方法を決まる場所がなくなるまで繰り返します。
  2. この状態から再帰を行って解を求めます。
    1. あるマスに入る四角は複数あるのでこのうちのひとつをこのマスを含む四角として四角を拡大します。
    2. その状態から確定するところをすべて決めます。
    3. これをすべてのマスに入る四角が決まるまで行います。
  3. この時点でひとつの解が出てきます。この解になる問題が単一解かどうかを調べます。
    1. 値のない数字の入る箇所の数字にその位置に入っている四角の面積を設定します。
    2. その状態で確定する場所を決めていき、解が1つだけ存在することを確認します。
  4. もし単一解であるならそれを生成した問題とします。単一解でないなら次の解を求めます。


こんな感じです。文字にするとちょっと長くなりました。これでも解がない場合の処理とかをはしょって書いています。


この方法は以前聞いた自動生成の方法に比べて退化しているイメージですが、
これなら適当に組んでも自動生成のプログラムが作れると思いました。
これに気がついたことにより、僕の中の自動生成プログラムに対する難易度の高さはだいぶ低くなりました。