一人麻雀計算機その10・初回リリース
2016-11-05(Sat)
今日の成果はこちら。
2016年11月5日 ver1.04
入力値に同種の牌が5枚以上あるときエラーメッセージを出して処理を止めるよう変更。
ハッシュテーブルを更新・保存する機能を追加。
計算時間がやや改善。
その他雑多なバグ修正。
今日も地味目な内容だけど、計算速度向上について。
大きな変更は2点。
1点目は昨日作ったハッシュテーブルについて、いろいろな計算をやっていく中で、よく使われるパターンを前方に持ってきて、
検索にかかる時間を短縮しようという試みです。
とりあえずテーブルの更新のギミックは作れました。
後はとにかく計算をしまくって最適化の実作業をやっていくところですが、それは明日以降に回します。
2点目は一度計算済みの局収支等を呼び出す検索についてですが、
昨日は巡目でだけタグをつけてましたが、一発フラグと残り手替わり回数は整数になっててそれも簡単にタグをつけてグループ分けできるので、そのようにしました。
タグの内容(ハッシュ値)は(巡目)+18×(一発フラグ)+36×(残り手替わり回数)で1~144の数字です。
144個の別々のリストを作って、次々と手牌情報と局収支等を放り込んでいくと。
使ってないリストの方が圧倒的に多いですが、そうして分散させることで1個のリストの検索時間はたぶん短くなるだろうと。
さらにそれだけに飽き足らず、手牌情報についてもハッシュ関数でグループ分けして放り込むことにしました。
ハッシュ値の内容は(1枚目の数牌の数字)+(2枚目の数牌の数字)で0~18の数字です。ただし、字牌とか裸単騎とかで数字が分からないときは0としています。これで144個×19個で2736個のリストが生成されることになります。
さすがにやりすぎですかね。
実装して試して見たけど、普通に使う分にはそこまで大幅なスピードアップにはならないみたいです。
多分真価を発揮するのは手替わり2回以上とか三シャンテン以上とか計算時間がものすごくかかるケースとかだと思います。
それはまだ試してません。
今日の計算時間はこんな感じ。

左が手替わり0、右が手替わり1。
おそらく昨日よりは時間が短くなってるはず。
一向聴ならシャンテンを維持できる牌が通常4~8種類くらいだから一打に5秒(手替わり1回)なら、20秒~40秒の試行時間であると。ただし、一度計算したものは検索で情報をゲットできるので、1巡後くらいにはデータが出そろっているのでその辺はクリアされてるかなぁと。
もちろん手替わり0回(直接シャンテンを減らす受け入れのみ)なら一瞬なので、打牌に困ってタイムオーバーという事態は今の一人麻雀計算機なら起こらないでしょう。
とりあえず手持ちのアイデアは全部打ち止めです。初期よりは相当早くなってるのでまぁ満足です。(まぁ最初がひどすぎたのですが。)
後は手牌をたくさん入力して過程をぼーっと眺めるのと、ハッシュテーブルの更新とをのんびりやります。
一区切りついたので、いったんソフトを公開してみようかなーと思います。
昨日の考え通り、フルバージョンではなく機能を限定した体験版みたいなものになります。
画面のイメージはこんな感じ。

操作はいたってシンプル。
1・一人麻雀計算機.exeを起動する。
2・手牌、ツモ牌、ドラ表示牌、打牌候補の4情報を入力。
3・シャンテン数計算ボタンを押す。
4・数秒後、真ん中のリストボックスに結果(局収支・和了率・聴牌率・和了時平均得点・和了時一発割合)を表示される。
これだけです。とても簡単。
複数の打牌候補を比べるときはこんな感じ。

平面図なら打8pがよさそうだと、局収支の数値を比べればわかります。
ダウンロードのURLはこちらからになります。
https://www.axfc.net/u/3739137
とりあえず今回が初回なので、割と保守的に考えて、フルバージョンと比べてかなりの部分、機能を制限しています。
その分操作がかえってシンプルになって分かりやすくなったかもしれませんが。
しばらく反応を見ながら、体験版で操作できるところを今後拡充することも検討します。
使ってみて、「こういう機能が欲しい」みたいな要望などがあればコメント欄等でどしどしお寄せください。
もしかしたらファイル操作が絡む関係(exeファイルと同じディレクトリにあるparametahyou.txtとhashtable.txtからの読み込みとshutu.txtとhashtable.txtへの書き込み操作があります。)か、exeファイルを開くとき、ウィルスソフトにブロックされる可能性があります。(うちのウィルスバスターは反応した。)
もちろん実際にウィルスとかを仕込んでるわけではないですが(そのへんはこちらからは「信頼して実行の許可を出してくれ」くらいしか言えませんが)、
使用全般も含めて、自己責任でお願いします。
お堅い話は置いといてぜひ使ってみてください。
牌効率系の問題についての回答のひとつになります。
このソフトがあなたの快適な麻雀ライフの一助となることを願っております。
2016年11月5日 ver1.04
入力値に同種の牌が5枚以上あるときエラーメッセージを出して処理を止めるよう変更。
ハッシュテーブルを更新・保存する機能を追加。
計算時間がやや改善。
その他雑多なバグ修正。
今日も地味目な内容だけど、計算速度向上について。
大きな変更は2点。
1点目は昨日作ったハッシュテーブルについて、いろいろな計算をやっていく中で、よく使われるパターンを前方に持ってきて、
検索にかかる時間を短縮しようという試みです。
とりあえずテーブルの更新のギミックは作れました。
後はとにかく計算をしまくって最適化の実作業をやっていくところですが、それは明日以降に回します。
2点目は一度計算済みの局収支等を呼び出す検索についてですが、
昨日は巡目でだけタグをつけてましたが、一発フラグと残り手替わり回数は整数になっててそれも簡単にタグをつけてグループ分けできるので、そのようにしました。
タグの内容(ハッシュ値)は(巡目)+18×(一発フラグ)+36×(残り手替わり回数)で1~144の数字です。
144個の別々のリストを作って、次々と手牌情報と局収支等を放り込んでいくと。
使ってないリストの方が圧倒的に多いですが、そうして分散させることで1個のリストの検索時間はたぶん短くなるだろうと。
さらにそれだけに飽き足らず、手牌情報についてもハッシュ関数でグループ分けして放り込むことにしました。
ハッシュ値の内容は(1枚目の数牌の数字)+(2枚目の数牌の数字)で0~18の数字です。ただし、字牌とか裸単騎とかで数字が分からないときは0としています。これで144個×19個で2736個のリストが生成されることになります。
さすがにやりすぎですかね。
実装して試して見たけど、普通に使う分にはそこまで大幅なスピードアップにはならないみたいです。
多分真価を発揮するのは手替わり2回以上とか三シャンテン以上とか計算時間がものすごくかかるケースとかだと思います。
それはまだ試してません。
今日の計算時間はこんな感じ。

左が手替わり0、右が手替わり1。
おそらく昨日よりは時間が短くなってるはず。
一向聴ならシャンテンを維持できる牌が通常4~8種類くらいだから一打に5秒(手替わり1回)なら、20秒~40秒の試行時間であると。ただし、一度計算したものは検索で情報をゲットできるので、1巡後くらいにはデータが出そろっているのでその辺はクリアされてるかなぁと。
もちろん手替わり0回(直接シャンテンを減らす受け入れのみ)なら一瞬なので、打牌に困ってタイムオーバーという事態は今の一人麻雀計算機なら起こらないでしょう。
とりあえず手持ちのアイデアは全部打ち止めです。初期よりは相当早くなってるのでまぁ満足です。(まぁ最初がひどすぎたのですが。)
後は手牌をたくさん入力して過程をぼーっと眺めるのと、ハッシュテーブルの更新とをのんびりやります。
一区切りついたので、いったんソフトを公開してみようかなーと思います。
昨日の考え通り、フルバージョンではなく機能を限定した体験版みたいなものになります。
画面のイメージはこんな感じ。

操作はいたってシンプル。
1・一人麻雀計算機.exeを起動する。
2・手牌、ツモ牌、ドラ表示牌、打牌候補の4情報を入力。
3・シャンテン数計算ボタンを押す。
4・数秒後、真ん中のリストボックスに結果(局収支・和了率・聴牌率・和了時平均得点・和了時一発割合)を表示される。
これだけです。とても簡単。
複数の打牌候補を比べるときはこんな感じ。

平面図なら打8pがよさそうだと、局収支の数値を比べればわかります。
ダウンロードのURLはこちらからになります。
https://www.axfc.net/u/3739137
とりあえず今回が初回なので、割と保守的に考えて、フルバージョンと比べてかなりの部分、機能を制限しています。
その分操作がかえってシンプルになって分かりやすくなったかもしれませんが。
しばらく反応を見ながら、体験版で操作できるところを今後拡充することも検討します。
使ってみて、「こういう機能が欲しい」みたいな要望などがあればコメント欄等でどしどしお寄せください。
もしかしたらファイル操作が絡む関係(exeファイルと同じディレクトリにあるparametahyou.txtとhashtable.txtからの読み込みとshutu.txtとhashtable.txtへの書き込み操作があります。)か、exeファイルを開くとき、ウィルスソフトにブロックされる可能性があります。(うちのウィルスバスターは反応した。)
もちろん実際にウィルスとかを仕込んでるわけではないですが(そのへんはこちらからは「信頼して実行の許可を出してくれ」くらいしか言えませんが)、
使用全般も含めて、自己責任でお願いします。
お堅い話は置いといてぜひ使ってみてください。
牌効率系の問題についての回答のひとつになります。
このソフトがあなたの快適な麻雀ライフの一助となることを願っております。
スポンサーサイト