プロが教えるわが家の防犯対策術!

以下の数独を理詰め(ある基準)で解きたいのですが。

(0が埋まってないところです)

020 090 060
600 100 005
004 000 200

000 006 803
060 908 070
208 400 000

007 000 100
500 001 009
180 049 030

上記の問題を以下の基準で解説(できるならテク名とその参照元も)付きで解いていただけないでしょうか?
(初級/中級程度の手筋は省略して結構です)

[NG - 禁止テク]

・ミシチャンのサイト(http://www.geocities.jp/master_mishichan/index.h …)で
「ここまでやる?級テクニック」に分類されているテク
(ただし、Forcing Chain/Net と Advanced Coloring はOKです)

・Sudopedia(http://www.sudopedia.org/wiki/Solving_Technique)で
「Techniques of Last Resort」に分類されているテク
(ただし、Forcing Net はOKです)
「Brute Force」

[OK]

・上記以外のミシチャンのサイトかSudopediaにあるテクおよびそのバリエーションならOKです。

・世界文化社の「仮押さえのカーブ」およびそのバリエーションもOKです。

・Unique Rectangle などの唯一解系もOKです。

・その他独自のテクは、この問題だけでなく他の問題にも適用できるような一般化した解説を付けてください。

A 回答 (1件)

これは禁じ手なのかな? オリジナルなので良くわからないw


もし、そうであれば、ごめんなさい。

答え (一応確認していますが、間違ってないよな^^; と独り言w)

721 594 368
693 182 745
854 637 291

419 726 853
365 918 472
278 453 916

937 865 124
542 371 689
186 249 537



解法
左上済みのマスから、1~9の数字を当てはめ 行、列、3x3部分 に9個の数字が収まったら
1~9の数字が1つづあるか、評価し、OKなら、その候補を温存し、次のマスを同様に評価していきます。
もちろん、ソレより前のマスで使用している数字はスキップ、はじめから行、列、3x3に与えられている数字もスキップです。

既に、お分かりだと思いますが、これは全候補評価型の方法です。つまり力ずく…
非常に多くのパターンを検討しなければなりません。
しかし、答えが複数存在するような問題であっても解けます。
人手でこれをやるのは、忍耐の限界を超えていると思います。
高速プログラミングの技を駆使すれば、1分前後で解けるでしょう。
アルゴリズムから自作のプログラムを用いて、私のPCでは34秒で答えがでました。

数独は解き方のアルゴリズムも面白いですが、高速プログラミング・テクニックの腕試しとしても面白いテーマだと思います。

この回答への補足

解答はあっていますよ。

しかし残念ながら、解き方は Sudopedia でいう Brute Force (総当り虱潰し) です。

是非、電脳ぬきの頭脳で解ける(質問の基準での)方法を考えてみてください。
あるいはその方法を見つけるプログラムを作ってみてください。

補足日時:2010/08/28 13:45
    • good
    • 0
この回答へのお礼

基準に合った解き方は以下のサイトからダウンロードしたSolverで分かりました。
http://sourceforge.net/projects/hodoku/files/

目的には至りませんでしたが、この問題を試みていただいて有難うございました。

お礼日時:2010/11/07 16:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!