programming

また高速化

今度は玉が配置されてない所を示すポインタを集めた連結リストを動的に組み替えるように改良しました。毎回操作してるので処理速度的には微妙かなと思っていたのですけど、葉の部分で処理が大分少なくなるらしく幾分か早くなりました。 さらに着手可能判定の…

中盤関数変更

とりあえず場所評価と開放度による評価を追加しました。しかし、対戦してみると激弱いです。yosshi12曰く「前の評価は徐々に値が増えていっていやらしかったけど、今回のは純粋に弱い。」だそうです。一応端を取られにくく作ったんですけどね。最後の最後で…

アイデア一つ消費

盤データに外枠をつけて裏返し確認で余計な探索をしないように改良してみました。速さを期待するというより潜在的なバグの可能性を潰そうかと思っていたのでやはりそんなに速くはなりませんでした。それでも処理時間を2%くらいはカットできたので十分でし…

次の一手を読むために

超適当に計算してみたところ、あと一手読むためには思考時間を今の25%にしなければならないっぽいです。対する今のアイデアの数は二つ。運がよければ一手読めるかな?といった程度のものです。とりあえずアイデアが尽きたら中盤でそれなりに強くなるよう…

オセロちょっとだけ早くなる

盤上すべてのマスで裏返し判定をしていたのですが、白でも黒でもないマスを連結リストでまとめてから裏返し判定をしてみました。結果は処理時間が50%ほどになりました。でも、これでも12手読みが大体15秒くらいでとっても遅い訳で、まだまだ改良の余地…

やっと前に進む

なかなか頑固なバグがあって大変でしたが、フローチャートを書いてから作った瞬間にまるで何もなかったかのように正常動作しました。 やっとこれでアイデアを消化することができます。よかったよかった。

バグが取れない

オセロのAI思考部分に工夫すると取れそうな引数がありました。これを取ろうといろいろ組み替えてなんとか動かしてみたのですけど、途中でプログラムが終了してしまうバグが発生。40手後半あたりに再帰処理をしている途中に突然終了してしまうので、バグチ…

高速化はいいけど

経過時間がわかるようにゲーム中に経過した時間を表示する機構を追加しました。これでシステムを改良した時の変化がわかりやすいようになりました。 高速化することはいいことなのですけど、高速化することによりどんどん関数同士の結合度が上がっていきます…

とりあえずちょっとだけ高速化

玉を打てるか判定する関数と、玉をひっくり返す関数に明らかな無駄があった(右上隅で判定しても上方向や右方向もチェックする)ので取り除いたところ、終盤の読むスピードが飛躍的に向上しました。おかげで読みきりが6手ほど伸びて現在15手読みまででき…

4×4リバーシ読みきり完了

ただ力任せにやれば4×4リバーシ読みきりはさほど難しくは無いのですけど、白8石勝ちで読みきりできました。私は再帰的関数が超苦手なので一安心といったところです。次はもっと効率のよくなるように改造して深く読めるようにしたいと思います。今のところ…

去年のオセロプログラムを掘り起こす

一から作ろうと思ったのですけど、前のプログラムがあるなら掘り起こさないとね。というわけでHDDのなかを引っかきまわしてコードを掘り起こしてみました。 ・・・ ・・ ・ なんだこの汚いコードは。これ書いた奴出て来い。あ、私か(ぉ まあ500行くらい…