紙と鉛筆、数独問題作成プログラムの作成記録のまとめ | のらプログラマの独学と数独と自転車!(仮)

のらプログラマの独学と数独と自転車!(仮)

2月下旬、鹿児島市吉野町に引越、
孟宗竹と雑木でアマゾン化した畑地の間伐作業、
草刈り機とかチェーンソーとか鎌とか鉈とか使ったのら仕事の毎日です。

今回のテーマ数独は問題サンプルの紹介では無く、

数独問題作成プログラムの作成記録のまとめです。



はじめに、

退院後リハビリとしてプログラム作成を始めた頃、

右手はまともにキーを押える事も出来ないうえに、


脳梗塞を起こした場所によっては身体麻痺では無く、

記憶や能力を失う事が予想できたので、


プログラム技術を忘れてしまっているのではないか、

とても不安でした。



自分のリハビリに

必要な練習教材や練習課題を作る事が前提なので、


初めのプログラムは文字を書く練習の為の

自由帳や練習帳のフォーマットを作成するモノ、


次が計算問題を作成するモノ、

そして数独問題を作成するモノと変化していきました。


脳梗塞リハビリ用の「練習課題」を作成する事を

目的に作成した自分向けのプログラムでしたが、

退院から2年経過したのを契機に、ネットで公開しました。


公開にあたり画面の操作性とか画面の見栄えとか

サーバー負荷の軽減対策とかプログラムの修正を行ないました。


その後もプログラム作成自体がリハビリとして定着化しており、

プログラムの改善と機能追加を繰り返しています。




そこで、

ここまでの数独アプリ作成の記憶を記録する事にしました。


数独アプリのスタートは「9x9x小計値」でしたが、

その後「9x9x基本」から「マスの大きさ」にて

「6x6、8x8、12x12、16x16、25x25」へ、


「盤の枚数」にて「9x9x2、9x9x4、9x9x5」へ、

「盤の配置」にて「僧兵、螺旋、風車、交差」へ、


「ヒントの内容」にて「小計値、不等式、奇数偶数、クロプキ、

 フレーム、ビル軒先、引き算、掛け算、四方合計」へ、


「数並びの条件」にて

「対角線、格子柄、星型群、四広場、正方枠、金剛石、

 二対線、雪結晶、扇風機」へ


「9x9の変型」にて、テーブルクロス、寄せ木細工、

「多様な変化」にて、立方体×3種、3角型×5種、煉瓦壁×2種、


と、多様に派生しています。




私は、パズル作家ではなくプログラマ(ソフト屋)なので、

問題表記が数字である事にこだわりはないです。


よって、

16進数、英文字、ひらがな、カタカナ、漢字(単位や干支や惑星や将棋)、

元素記号(希土類)などを使った問題を作成出来るようにしています。


問題表記が数字じゃないので「数独」じゃないとも言えますが、

ルールは同じなので、合格としました。(おいおい)



問題表記より

(ヒントが欠番だけの)基本問題の場合のヒントの質の方が問題です。

ヒトが考えた問題は「巧妙なヒントの組み合わせ」になっていますが、


現在のアルゴリズムは思考を真似ていないので、

ヒトの考えたような問題は作成できないのが現状です。


その結果として、

未解決問題にならないようにする為にヒント数が多いです。

更に複数解答問題になってしまう傾向が高いです。(とほほ)


今後、処理時間は速いままで、

ヒント作成に「ヒトの思考を真似たアルゴリズム」にする事が、

最大の課題です。


理想はヒントを解くと次のヒントになっている的な問題ですね。



ところで、

問題数が最大でも16頁(問)になっているのは

サーバーの負荷を軽減させる為です。


問題のサイズによってはサーバーでも連続で、

999問くらいは作成可能なのですが、


200秒間とかCPUを占有してしまっては、

問題作成サイトのアクセス頻度が低くても応答が悪すぎる、

若しくはダウン状態になってしまいます。



また、

連続クリック(アタック)を防止する目的で、

待機処理も組み込みました。


ちなみに、自動作成による問題のダブリですが、

自己解析させてみたところ9x9の問題にて、

連続5,000問作成すると同じ解答になる

問題が2ペア出てしまう結果となりました。


無論、解析時はPDFへの出力を止め、

作成データのみで処理してスピードアップを図り、

サーバーアプリのタイムオーバーを回避させています。


最新の修正、

問題の配色を5タイプ(原色系、モノクロ、暖色系、寒色系、パステル)から

選択可能にしました。


ヒトによって色の好みが違う事は当然ですが、

私が赤緑色弱(例、FFのパッケージ絵が汚く見える)なので、

色をひとつに絞る自信が無いからと言う理由が大きいです。

なので、色の選択も見た目では無く、

理論上の(RGB)値を使って決定しています。 (おいおい)


更に、多様化により画面構成が崩れてきたので、

全面的なレイアウトの見直しを行ないました。



最後、サーバーでは負荷の問題で作れない99問の

「数独生活(PDFファイル)」シリーズをアップしました。





※ ※ 今 日 の 写 真 ※ ※


のらプログラマの独学と数独のススメ!(仮)-201210_1044





やや言葉不足ではありますが、ここで終わりとします。