*All archives* |  *Admin*

<<02  2017/03  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31  03>>
一人麻雀計算機その10・初回リリース
今日の成果はこちら。

2016年11月5日 ver1.04
入力値に同種の牌が5枚以上あるときエラーメッセージを出して処理を止めるよう変更。
ハッシュテーブルを更新・保存する機能を追加。
計算時間がやや改善。
その他雑多なバグ修正。

今日も地味目な内容だけど、計算速度向上について。

大きな変更は2点。

1点目は昨日作ったハッシュテーブルについて、いろいろな計算をやっていく中で、よく使われるパターンを前方に持ってきて、
検索にかかる時間を短縮しようという試みです。
とりあえずテーブルの更新のギミックは作れました。
後はとにかく計算をしまくって最適化の実作業をやっていくところですが、それは明日以降に回します。

2点目は一度計算済みの局収支等を呼び出す検索についてですが、
昨日は巡目でだけタグをつけてましたが、一発フラグと残り手替わり回数は整数になっててそれも簡単にタグをつけてグループ分けできるので、そのようにしました。
タグの内容(ハッシュ値)は(巡目)+18×(一発フラグ)+36×(残り手替わり回数)で1~144の数字です。
144個の別々のリストを作って、次々と手牌情報と局収支等を放り込んでいくと。
使ってないリストの方が圧倒的に多いですが、そうして分散させることで1個のリストの検索時間はたぶん短くなるだろうと。

さらにそれだけに飽き足らず、手牌情報についてもハッシュ関数でグループ分けして放り込むことにしました。
ハッシュ値の内容は(1枚目の数牌の数字)+(2枚目の数牌の数字)で0~18の数字です。ただし、字牌とか裸単騎とかで数字が分からないときは0としています。これで144個×19個で2736個のリストが生成されることになります。
さすがにやりすぎですかね。
実装して試して見たけど、普通に使う分にはそこまで大幅なスピードアップにはならないみたいです。
多分真価を発揮するのは手替わり2回以上とか三シャンテン以上とか計算時間がものすごくかかるケースとかだと思います。
それはまだ試してません。

今日の計算時間はこんな感じ。
161105-01.png
左が手替わり0、右が手替わり1。
おそらく昨日よりは時間が短くなってるはず。
一向聴ならシャンテンを維持できる牌が通常4~8種類くらいだから一打に5秒(手替わり1回)なら、20秒~40秒の試行時間であると。ただし、一度計算したものは検索で情報をゲットできるので、1巡後くらいにはデータが出そろっているのでその辺はクリアされてるかなぁと。
もちろん手替わり0回(直接シャンテンを減らす受け入れのみ)なら一瞬なので、打牌に困ってタイムオーバーという事態は今の一人麻雀計算機なら起こらないでしょう。

とりあえず手持ちのアイデアは全部打ち止めです。初期よりは相当早くなってるのでまぁ満足です。(まぁ最初がひどすぎたのですが。)
後は手牌をたくさん入力して過程をぼーっと眺めるのと、ハッシュテーブルの更新とをのんびりやります。


一区切りついたので、いったんソフトを公開してみようかなーと思います。
昨日の考え通り、フルバージョンではなく機能を限定した体験版みたいなものになります。

画面のイメージはこんな感じ。
161105-02.png
操作はいたってシンプル。

1・一人麻雀計算機.exeを起動する。

2・手牌、ツモ牌、ドラ表示牌、打牌候補の4情報を入力。

3・シャンテン数計算ボタンを押す。

4・数秒後、真ん中のリストボックスに結果(局収支・和了率・聴牌率・和了時平均得点・和了時一発割合)を表示される。

これだけです。とても簡単。


複数の打牌候補を比べるときはこんな感じ。
161105-03b.png
平面図なら打8pがよさそうだと、局収支の数値を比べればわかります。

ダウンロードのURLはこちらからになります。
https://www.axfc.net/u/3739137

とりあえず今回が初回なので、割と保守的に考えて、フルバージョンと比べてかなりの部分、機能を制限しています。
その分操作がかえってシンプルになって分かりやすくなったかもしれませんが。
しばらく反応を見ながら、体験版で操作できるところを今後拡充することも検討します。

使ってみて、「こういう機能が欲しい」みたいな要望などがあればコメント欄等でどしどしお寄せください。

もしかしたらファイル操作が絡む関係(exeファイルと同じディレクトリにあるparametahyou.txtとhashtable.txtからの読み込みとshutu.txtとhashtable.txtへの書き込み操作があります。)か、exeファイルを開くとき、ウィルスソフトにブロックされる可能性があります。(うちのウィルスバスターは反応した。)
もちろん実際にウィルスとかを仕込んでるわけではないですが(そのへんはこちらからは「信頼して実行の許可を出してくれ」くらいしか言えませんが)、
使用全般も含めて、自己責任でお願いします。

お堅い話は置いといてぜひ使ってみてください。
牌効率系の問題についての回答のひとつになります。
このソフトがあなたの快適な麻雀ライフの一助となることを願っております。
スポンサーサイト

コメントの投稿

Secret
(非公開コメント受付中)

コメント

No title
1p2p3p→123p
の方が入力しやすいです。
No title
ありがてえ・・・ありがてえ・・・
とりあえず優劣よくわからんかった牌姿入力しまくるぞw
No title
一人麻雀計算機(=他家を考慮しない)で得た数値と四人麻雀を想定した何切るを単純に比較するのは誤解を招くので良くないと思います。
Re: No title
> 1p2p3p→123p
> の方が入力しやすいです。

製作者用に天鳳牌理ツールと同じ形式で入力できる機能はつけていますが、今のところはその機能は制限しています。
要望が多ければ解禁することも検討します。

>ありがてえ・・・ありがてえ・・・
>とりあえず優劣よくわからんかった牌姿入力しまくるぞw

計算はコンピュータが全部やってくれるので、ぜひ使い倒してあげてください。

>一人麻雀計算機(=他家を考慮しない)で得た数値と四人麻雀を想定した何切るを単純に比較するのは誤解を招くので良くないと思います。

今のところは参考値ということでなにとぞご容赦ください。
今後、四人麻雀への拡張も検討しています。
No title
とても感謝してます。ありがたく使わせていただきます。
流局まで続ける必要があるか
大変役立つデータやツールを公開してくださりありがとうございます。現在では流局まで牌を切れる仕様ですが、牌効率だけを考える上でも四人麻雀の速度を考慮して12順目ぐらいで打ち切ることが出来るようにしていただけるでしょうか。
Re: 流局まで続ける必要があるか
> 大変役立つデータやツールを公開してくださりありがとうございます。現在では流局まで牌を切れる仕様ですが、牌効率だけを考える上でも四人麻雀の速度を考慮して12順目ぐらいで打ち切ることが出来るようにしていただけるでしょうか。

今作ってる途中の四麻計算機で他家の和了とかも考慮できるように改良をしているので、それで十分足りるかなーとは思ってます。
12巡目とか1つ固定の巡目でスパっと切ってしまっても余計にややこしくなって現実に即さないような気はしますし。
プロフィール

Author:nisi5028
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
フリーエリア
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード