有効牌(向聴数を下げることができる牌)の種類と枚数を数える処理を作成中。
有効牌を数える方法としては2通りのやり方を考えている。
1.順番に牌を追加して作成済みの向聴数チェックアルゴリズムに掛け向聴数が改善された場合有効牌とする。
2.現状の手牌を向聴数が最善になるような面子、ターツ、対子、浮き牌の組み合わせするパターンをリストアップし、その組むあわせをベースに4面子1雀頭に向かう牌をピックアップし有効牌とする。
とりあえず1は今まで作ったアルゴリズムの組み合わせで簡単に出来るので処理速度を計測してみた。
私が開発に使っているマシン[DELL Dimension 8400(Pentium4の2.8GHz)]で2秒から3秒かかるので麻雀ゲームとしては残念ながら微妙に遅い。2の処理のための下準備の処理を作成中。こっちはややプログラムが面倒だが果たして高速化されるだろうか。理屈上は1のやり方より早いはずだがちょっと心配。これでだめだったら他にいい方法が思いつかない。
2の方法をやる前に面子、ターツ、トイツの数とシャンテン数の関係を調べておく必要があったので調べてみた。
結果は以下のとおり。
向,面,タ,対
1,3,0,2
1,3,1,1
1,4,0,0
2,2,0,3
2,2,1,2
2,2,2,1
2,3,0,1
2,3,1,0
2,3,2,0
3,1,0,4
3,1,0,5
3,1,1,3
3,1,1,4
3,1,2,2
3,1,2,3
3,1,3,1
3,1,3,2
3,1,4,1
3,2,0,2
3,2,1,1
3,2,2,0
3,2,3,0
3,3,0,0
4,0,0,5
4,0,0,6
4,0,1,4
4,0,1,5
4,0,2,3
4,0,2,4
4,0,3,2
4,0,3,3
4,0,4,1
4,0,4,2
4,0,5,1
4,1,0,3
4,1,1,2
4,1,2,1
4,1,3,0
4,1,4,0
4,1,5,0
4,2,0,1
4,2,1,0
5,0,0,4
5,0,1,3
5,0,2,2
5,0,3,1
5,0,4,0
5,0,5,0
5,0,6,0
5,1,0,2
5,1,1,1
5,1,2,0
5,2,0,0
6,0,0,3
6,0,1,2
6,0,2,1
6,0,3,0
6,1,0,1
6,1,1,0
7,0,0,2
7,0,1,1
7,0,2,0
7,1,0,0
8,0,0,1
8,0,1,0
9,0,0,0
向:向聴数+1(聴牌なら1,一向聴なら2)/面:面子の数/タ:ターツの数/対(対子の数)
総ステップ数:4093
最近のコメント