数独の自動での解かせ方2010年09月27日 10時09分27秒

PHPでコーディング中なので、アルゴリズムだけ書いてみる。

まず、3×3のマスに1から9までの数字を1つずつ埋めるパターンは有限であることに着目する。このパターンを配列として格納しておく。ちなみにパターンの数は362,880ある。

数字が固定されている部分があれば、それは対象となるパターンを減らすことが可能になることを示す。1ヶ所固定されていれば40,320パターンになる。2ヶ所なら5,040パターンだ。計算の方法は簡単なので説明しない。ちなみに実際の問題では3×3のマスあたりで3~4ヶ所固定されているから、必要なパターンの数はだいぶ少ないね。

あとは、9×9のマスに片っ端からパターンを当てはめて、縦横の数字が1から9まで揃うかどうかをチェックしていけばいい(足して45になるか、でもいいかな)。36万通りの9重のループだからかなり時間がかかるけど、一番簡単に求められる。

実際には全部チェックすると時間がかかりすぎるので、同じ列に同じ数字があるパターンはスキップするようにすれば総当りをチェックする必要はない。

‥‥というスキップ処理を作ってる最中で、スキップの判断をさせるのが面倒になってきた。って言うか、もう飽きてきた。処理を考えてる暇があれば実際に解いたほうが早い(1問だけならね)。

SD∞ メサイアバルキリー

かなりデフォルメされたメサイアバルキリー、でもちゃんと3段変形するようです。う~ん、欲しいな‥‥。

<< 2010/09 >>
01 02 03 04
05 06 07 08 09 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

このブログについて

オンラインゲームであるファンタシースターオンライン2のプレイ日記をメインに、あとは日々雑多なことをつれづれと‥‥。


私信>
馬鹿業者対策のため、コメントにURLが含まれていると自動的に削除されます。コメントされる際はご注意ください。

ベストセラー

PhantasyStar Online2

大神 絶景版

RSS