2016.04.16 新天地へ
KOMARIです。

掘木さんの(´・ω・`)催促を受けて、C++をいじっています。
カテゴリを見て気づいた方もいるでしょう。
そう、あのねこりすのdllを自分で作ってみることにしました。
そもそもねこりすってなんぞや?って方はぜひ遊んでね(宣伝)
(・ω・)こっからだうんろーど(・ω・)

で、このねこりすのパズルモードでは、ランダム生成された問題を裏で解けるかどうか判定したりしてます。
ねこりすを制作していた当時、技術がなかった私のために、そのためのDLLを掘木さんが組んでくれました。
(HSP初めてまともに作ったのがねこりすだったりする)
そのDLLに問題とカーソルの形を投げると、最短手(カーソルの位置と回転状態)を教えてくれます。
そんなDLLがあったわけですが、結局私が組みなおすことは今までありませんでした。

つい先日、掘木さんと久々に話している時に、DLLを組みなおしたらどうやとの話を受けました。
まあ、前からこのDLLの組みなおしに関しては何回か話があがっていました。
掘木さん曰く、「一回ガチのアルゴリズムと格闘すると、いい経験になるでぇ(・ω・)」とのことです。

そんなこんなで5日ほど前からDLLを組んでみてるわけですが…(・ω・)
組むこと自体は簡単なのですが、最適化(答えが出るまでの時間の短縮)に苦労しました。
アルゴリズムそのものの改変に始まり、変数の宣言の仕方、格納方法、最適なコンテナの選択、コンパイラに渡すコマンドラインの設定…etc
動くものが出来上がってからは、掘木さんが作ったDLLより速いDLLを作ることを目標にプログラミングしていました。

そして今日やっとできあがりました。
テストに使った問題は以下です。

Z型 0は空白
043400
033130
032110
024210
331421
344313

2日前に3時間39分8秒389かけて答えを捻出したものがこちら。

nekodll1.jpg

どうやら最短手は7手のようです。手ごわいですね。
まあ、答えが出るまでに時間がかかりすぎて使い物になりませんけどね。
最適化に詰まり、掘木さんに相談して助言を受けました。
それは、明らかに大幅に速度をあげるものだったので、早速取り入れました。
実際、とあるリストの型<vector>を<boost::set>にしただけで、速度が格段にあがりました。
<std::set>だと、"operator<"の書き方が悪いのか、うまく動かないので、boostライブラリの方を使ってみました。(リストの中の順番にこだわりは全くありませんからね)
ということで、今日改めて実行した結果がこちらです。

nekodll2.jpg

うーん、最適化ってすばらしい(・ω・)   おしまい



で、結局掘木さんのDLLの速度には勝てたわけです。
なおこっちがDLLを作ることにしたのを見て、掘木さんももう一度DLLを作り直すことにしたようです。
そのDLLに速度負けたらまた作り直し?(ゲー'A`ェ)…ソンナノイヤダ
まあ、自分としては、とても満足いくものがてきたと思います。
このDLLを組んだことで、少しだけC++(とアルゴリズム)の世界を知ることができたような気がします。
いい経験になりました。経験がないと鍛えられないもんね。



そんなこんなで、プログラミングのモチベがあがったから、なんかゲーム作れたらいいなあ…。
では、また次回の記事でお会いしましょう(ノ・ω・ヽ)
KOMARIです。

最近はとあるネトゲをやっています。レア掘り楽しい。
今期のアニメは何を見ようかな…とかも考えたりもしてます。

ずいぶん前の話ですが、HSPコンテスト2015の参加賞もらったんですよね。
私全く参加してないんだけど…これは催促?(´・ω・`)



さて、ちまちま作っていた曲が完成したので貼ってみます(・ω・)



相変わらずなんて読むのかわからない。
DUST HORIKと書いてあります。「だすとほりっく」です。
これは、掘木さんのdust21という曲という名の素材をアレンジしたものです。
なかなか気に入ってます。主にジャケットが(ぇ
曲の方も(自分の中では)まあまあ出来がいいです。
そもそもまともに作った曲なんて、少ししかないですからね。




最近、寒かったり暖かかったりと、コロコロ気温が変わりますね。
季節の変わり目なので、みなさん体調には気を付けてくださいね。

それではまた次回の記事で(・ω・)ノシ