数独で何かできないかなと考えた。縦横の数を変えるとか、エリアの形を正方形ではないパタンに変形するとか。そういえば、エリアの形を変形する問題は作ったことあるなぁ。でも、今回は単純に1~9の文字を他の文字で置き換えてみることにした。
9個でワンパックのものを思い出してみると
・九字(臨兵闘者皆陣列在前)
・サイボーグ009のメンバー
・九尾狐の尻尾
・ヒドラの首の数
以上で自分はギブアップ、他にも何かあったかなぁ・・・。
1番目に思いついた、「九字数独」を作ってみることに。できあがりの問題としては、↓に表出漢字を増やしていったモノが目標。
臨 | □ | □ | □ | □ | □ | □ | □ | □ |
□ | 兵 | □ | □ | □ | □ | □ | □ | □ |
□ | □ | 闘 | □ | □ | □ | □ | □ | □ |
□ | □ | □ | 者 | □ | □ | □ | □ | □ |
□ | □ | □ | □ | 皆 | □ | □ | □ | □ |
□ | □ | □ | □ | □ | 陣 | □ | □ | □ |
□ | □ | □ | □ | □ | □ | 列 | □ | □ |
□ | □ | □ | □ | □ | □ | □ | 在 | □ |
□ | □ | □ | □ | □ | □ | □ | □ | 前 |
どこぞの出来合いの数独問題の数字を漢字に変換してしまえば、できてしまうところだが、せっかくなので、プログラムを書いて問題を作ってみることに。
ネタ 1-1 「人馬一体」
問題を作るプログラムでなく、問題を解くプログラムを作る。ポチポチ人間(つまり、いわい)が問題を変更しながら、唯一解を目指すという作戦を取ってみる。前もこれでうまく行っていたので。人馬一体ではないが、ヒトとパソコンの二人三脚的なもの。
ネタ 1-2 「仮定法で」
数独は何か凝ったことをしなくても、候補を上げて条件にあってるかどうかをチェックしてく方法で解けたという記憶あり。凝ったことをするとかえってバグが入ったり、あるいは遅くなったりするかも。
ヒトが数独を解く場合でいう「仮定法」に対応してる。
ネタ 1-3 「探索順を毎回変える」
複数解だった場合、5個出力して探索を止めにしようと思っているが、そのときに、毎回、候補が変わるように乱数等を使い探索順を変える。ネタ1-1を使うときの偏りを避け、運を入れる。
次回その2に続く。