ナンプレを楽しんでおりましたが
というわけで、ナンプレってばシンプルなルールで手軽に楽しめるわけです。
数字が埋まったときの気持ちよさがいいですね。
詰まった
で、先日も同様にナンプレに立ち向かっていたわけですけど、調子いい感じで7割か8割くらい埋めたところでどうやっても矛盾が発生する自体に。
ダメだこれ、ミスった……。
消してやり直したくない
せっかくここまで来たのに消してやり直すのってなんかちょっとつらい。
なんかもうこの問題に関しては楽してクリアしたいなぁ……。
というわけで
ExcelでもってVBAのマクロを組んで、PCに解いてもらうのはどうだろうかと思いました。
マクロ組むのもこれはこれでパズルみたいで面白いんですよね。
ネット探せばナンプレを解答してくれるページがあると思うんですけど、あくまでも自分とナンプレの戦いなのでネットの検索はなし。
ペンを使う代わりにExcelを使うというルールでやってみました。
アルゴリズムを考える
で、どうやったら解けるかなと考えてみましたけど、次のような感じでいけるのではないかと思いました。
数字1について、
- “1”が入らないマス目を洗い出す。
- 洗い出したマス目を見て、確実に”1″しか入らないところがあれば1を入れる。
これを2~9についてもやる。
全部終わるまで、繰り返して1~9についてやる。
……という、普通に解くときに頭の中でやっている手順です。
さらに具体化すると、
- ・既に数字が何か入っているマス目に”1″は入らない。
・横方向に”1″が入っているマス目には”1″は入らない。
・縦方向に”1″が入っているマス目には”1″は入らない。
・”1″が入っているブロックには”1″は入らない。 - ・横方向に”1″が入る可能性のマス目が1つならば”1″が確定。
・縦方向に”1″が入る可能性のマス目が1つならば”1″が確定。
・ブロック内に”1″が入る可能性のマス目が1つならば”1″が確定。
となりそう。
作ってみた
そんな感じで早速作ってみました。
ちなみに私のマクロのスキルは、簡単なことならできるけど詳しいことはあまりわからない自己流、という感じなのでいろいろと迷いながらの作成になりましたけど、これがまた楽しいんですね。
本当にパズル解いている感がある。
そんなこんなで、できました。
無事、考えたアルゴリズムで解けているようで、詰まった問題の正解にたどり着きました。
まとめ
というわけで、そういう遊びをしましたという話でした。
正解自体は冊子の最後に載っているのでそれを見ればいいんですけど、とにかく自分で解きたいということで、2~3時間くらいかかったような気がしますけど、なんかこういうのもありだな、と思いました。
実際自力で解くときも同じように機械的にやっちゃえば正解にたどりつくわけで、そこだけ考えるとナンプレって自力で解くことの何がいいんだろうか、となりそうですけど、自力だとそれはそれで数字が埋まっていく過程が楽しいですね。
特にオチもない休日の過ごし方でした。
おわり。
コメント