一晩考えたが結局、超難問を解くロジックは見つからなかったので、別のアプローチ。
総当りメソッド(w
ボードスイープとエリアスイープを繰り返して、変化がなくなった時点で、空マスに入る候補の数字はかなり絞り込まれている。中には2つの数字のうちどちらか、というマスもある。そこで、
- 2つの候補があるマス
- 3つの候補があるマス
- 4つの候補があるマス
- …
というように候補数の少ないマスから順番に、全ての候補を実際に入れてみて、改めてその状態からボードスイープ、エリアスイープをやる。ダメだったら次の候補。という「総当りメソッド」を導入。
一応手元に用意した問題は全て解けた。やったぜママン(誰
あとはコーディング中に仕掛けたデバッグ出力を整備して、monotoneのレポジトリに入れておしまい。Pentium MMX 133Mhz(激遅)でも「超難問」を数秒で解けるから、まあ、そこそこの能力なんじゃないでしょうか。(自画自賛