波及効果ソルバーを自分でも使ってみました

波及効果ソルバーを自分でも使ってみました。自分で使うことによって問題点とか改善すべき点を洗い出すわけですよ。
仕様をいくら練りこんでも、考えているだけではダメで自分で使ってみないと本当の意味での使い勝手の良いツールは作れないと思っています。案ずるより産むが易しですよ。ちょっと違う?


とりあえず生成物。難易度はアゼンですが理詰めで解けます。
実をいうと右上の4は自分が理詰めで解けるようにするために追加したものなので、なくても解は一意になるとソルバーは言ってました。



ƒJƒ“ƒyƒ“ - hakyukoka



一応カンペンのリンクをつけたけど、ある程度以上難しくなってくるとカンペンだとメモが取れないので結構きついかも。


以下、問題点とか懸念事項とかをつらつらと箇条書きで。

  • 部屋を入力する際に元からあった部屋を大きくするとその部屋全体が一時的に見えなくなるのですが、複数の部屋が同時に見えなくなることがある。その場合はその複数に分かれている部屋が同一の部屋とPencilBox上で判断されているのかも知れません。そうなると当然ソルバーもまともに動かないわけで。
  • あらかじめ適当に部屋を分けてその状態で解を持つかどうかソルバーかけて調べると思った以上に解が存在しないことが多い。
  • 波及効果の自動生成を作るためには解を持ちうる分割の作成のためのアルゴリズムが必要。
  • 部屋に属してないマスは無視するようにしています。ソルバーの動作として解を見つける際にすべてのマスが埋まって部屋に属していないマスがある場合、「解けませんでした」のメッセージを出していますが、この挙動は部屋の属していないマスは存在しないものとして動作するように変更しようかな。不定形の問題を解くイメージ。
  • ちなみに部屋に属してないマスがあるときでも、部屋に属しているマスで満たす解がない場合には「解がありません」と表示します。これを利用してちょっとづつ部屋を増やしていくことができますが、実際やってみると思った以上に解を持ってくれない。
  • 大体の場面では相当早く判定を行ってくれますが、ソルバーがなかなか処理が終了しない場面も多々あります。その場合は待ってもダメなことが多いどころではなく待ってみて複数解アリの結果が返ってきたのを見たことがない。というわけですぐにあきらめたほうがよさげ。ソルバーのロジックをもう少し追加したほうがよいかも。
  • 盤面が解を持っている状況まで持っていけば、その状態で数字がどのように入っていてもソルバーはすぐに答えを返してくれています。
  • 複数解アリの場合、ある程度数字をいれてくれるのですが、その処理がちょっと決まった部分のすべてではない感じ。おそらくは複数解があることを発見したら処理をやめてしまっているのが原因と思われる。
  • 波及効果に関してはPencilBoxに頼らないで自分でクライアントを作ったほうがよいかも。