★ゆーえむえる
 午前中に本屋、と言っても家電屋の書籍コーナーへ。
WSH/HTAの本でも無いかと探してみたが、見つからず。
 Vista(Windowsサイドバー?)のガジェットを作ろう、的な本で少しHTAに触れてるものがあったけど、買うほどの価値は無いと判断。
あ、そうだ、せっかく時間があることだし、いつぞや呑みの席でも話題になったし、UMLでも勉強するかと思って物色。
 ただ読むだけの本では面白くないので、試験向けの学習書を買ってきた。
 そしてさらにやる気をかき立てるために、A5ノートとフリクションポイント04(こすると消えるボールペン)3色セットも購入。
昼食後から夕方まで机に向かってみた。
 UMLは言語というより表記法に近いものだと思っていたけど。
 なるほど、なるほど。
 思考と言語には深いつながりがあると言うが。
 UMLはロジックやプロセスを捉え、整理し、分析する上で強力な手助けになる。
数独が好きで、携帯でもナンプレをやったりするんだが。
 「これってさっくりHTAで作れたりするんじゃね?」
 などと思って作り始めてみた。
ところがどっこい。
 9×9=81マスに1~9の「縦・横・3×3のブロックでユニークな」数字を埋めようとすると、なかなか難しい。
 最初は縦または横でユニークの状態で埋めて、それからルールに反するマス同士を入れ替えれば出来るんじゃないかと思ったが、とんでもない。
 「ルールに反する」箇所を判断するのは簡単だが、「ルールに沿う」ためには、はて、どうしたものやら?
むむむ…。
とりあえず
- 埋めるマスに着目
 - 「ルールに沿う」数字をリストアップ
 - その中からランダムに選んだ数字をチョイス
 
を繰り返す。
 ただ、途中(2)で、どの数字も使えないという残念な事態が発生した場合は、1マス目からやり直し。
 (※画像の「試行回数」は、そのやり直し回数)
で、一応、問題(というか、問題になり得る形)は作れるようになったのだけど。
 ロジックが完全に乱数依存なため、作成速度にかなりのバラツキがあるし、総じて遅い。
 下手すると「このスクリプト、無限ループしてません?」的な警告が出てくる。
さーて、どうすりゃ高速化できるかなぁ。



コメント