全体トップへ戻る

数独1(論理解法) 

数独に関わってから7〜8年経ってしまった。定年後の半分以上の年数をつきあったことになる。
それだけの年数関わってきたのだから何か書き残しておきたい。 2017.03.16 


数独と解法 難しい問題 準備中 準備中 準備中


脳の老化防止に良いと聞いたので、新聞や雑誌に載っている問題をやり始めた。易しいのは何とか解けるが、少し難しいのになると
解くのに手間取ってしまい、『まだまだ初心者です』という域から抜けられない。
10級から1級、初段から10段まで難易度別に分けてある問題集などを買ってきてやってみたが、解答途中間違えることが多い。
途中で間違いが判ると、どこまで遡って見直せば良いのか判断できず、最初からやり直すしかない。
最初からやり直すということは、間違えるリスクは初回と同じだから、何度トライしても終わらない。脳トレ効果も怪しいものだ。


解答プログラムで3サイクル

各行、各列、各ブロックに配置された9個の各枡を、1〜9の異なる数字で埋めよというのが問題である。
問題で伏字になっている枡を、法則に合うように埋めれば出来上がり。
決定舛(赤字)が多くて未決舛(空白)が少なければ易しく、逆ならば難しい問題だという傾向はあるが、必ずそうとは限らない。

いつもケアレスミスで間違えているのだから、パソコンにやらせれば間違えないだろう。でもそれでは脳トレにならない。

そこで、自分でプログラムを作ることに挑戦することにした。EXCEL・VBAというのを覚えればプログラム組めるそうだ。
本を買ってきて勉強しながら懸命にやり始めた。仕事現役時代にちょっとだけMATLABというのをかじったことがあるが、
それに似たところが結構あるので助かった。


プログラムを作るにあたって、左図のようなモデルを考える。

1.すべての舛に1本づつ棒を立てる。
2.空白枡の棒には下から順に1〜9の番号のついた
  9枚の皿を挿す。
3.決定舛の棒にはその決定番号の段に1枚だけ皿を挿す。
4.決定舛の棒に挿さった皿を銃座と考えて、それが所属する順次
  行、列、ブロックの同一番号の皿を打ち落とす。

5.最下層面から順次撃ち始めて最上層面まで撃ち終わったら
  各枡に立っている棒のうち、1枚しか皿が残っていないものが
  あれば、その枡を決定舛とし残った皿の番号を決定数字とする。
6.限定的な方向のみ、にしか撃てない特殊な銃座を作れる付則
  として付則1と付則2があるが説明を省略する。

7.3〜5項を何度も繰り返すうちにだんだんと決定舛の数が増える。
8.増えて81舛に到達すれば解答完了となるが、もしも81舛に
  到達しないうちに増加が止まれば、この論理では回答不能
  であるから別の論理が必要となる。


新聞とか雑誌に掲載されている問題はほとんどが上記の論理で解ける(今まで私が出会った数百題は全て解けた)数独専門の本や
ネットの難問サイトなどにある問題は解けない場合が多い。

このプログラムで解ける問題でも、私が手動で解こうと頑張っても解けない問題もたくさんある。

そういう問題に対しては『このプログラムが何サイクルかけて解くか』によって問題の難易度を測ったり、
途中経過をカンニングして参考に<したりして使っている。そうすれば脳トレにもなるし、たとえ手動で解けなくても、
『パソコンでこれだけかかるのなら、手動で解けなくて当然だ』と慰めにもなる。

以下にそのような例を2題あげておくので、興味のある人は解いてみてほしい。因みに私が手動で解ける限界は8サイクル位。


解答プログラムで8サイクル

解答プログラムで15サイクル
inserted by FC2 system