[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 15:32 / Filesize : 253 KB / Number-of Response : 980
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

おまいら最強の麻雀プログラムしてみろよ Part2



1 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 21:47:50 ]
めざせ最強の麻雀プログラム!
層の薄いこのカテゴリーなら、将棋やオセロよりも
ずっと簡単にその地位を手にいれられるぞ!

208 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/07/30(月) 14:43:19 ]
>>197 まずは、下のクラスを見て欲しい。

//========================================================================
// 手牌分析クラス
//========================================================================
class CTatsu : public CBase
{
public:
//
// 評価用データ Analyze(void); で設定される
//
bool m_FuritennF; // フリテンフラグ
int m_TenpaiNo; // 後幾つでテンパイ
YAKU m_YakuType; // 現在の役タイプ
int m_YakuNo; // 役の藩数
int m_YakuNotoN; // 役まで後N枚の役の藩数
int m_TurtuNo; // ターツの数
int m_MachiNo; // 牌の待ち数
int m_TotalPoint; // 合計ポイント
int m_outHai; // 評価するときに排除した牌
int m_AtamaNo; // 頭の数
int m_AtamaHai; // 頭の牌番号
UCHAR m_MachiHai[PTBLMAX]; // 待ち牌データ
int m_tehaiP[PTBLMAX]; // 手牌のポイント
private:
//
// ターツ評価用データ
//
CMentu *m_pMD; // 親メンツデータポインタ
int * m_ptehaiNAnko; // 元の手牌   コーツを取り除いてる
int * m_ptehai; // 評価する手牌、面子と頭を取り除いてる


209 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/07/30(月) 14:43:58 ]
public:
void init(); // 初期化する。
int Analyze(CMentu *pmentu,int ahai); // ターツ評価
void AnalyzeNoHai(int no); // 数字牌の分析
bool tehaiCompar(CTatsu *pTD); // 手牌の優劣を比較、自分が低い:true, 以外:false
bool tehaiComparTenpai(CTatsu *pTD); // テンパイ時の手牌の優劣を比較
void TenpaiMachiHai(); // テンパイの時の待ち牌作成
bool chkFuriten(); // フリテン試験
virtual bool chkThis(); // 自己オブジェクトの試験
virtual void DispData(); // データ表示
//
// 役の分析
//
void AnalyzeYaku(void); // 役の分析
bool AnalyzeYakuHai(void); // 役牌 場風、自風、白発中
bool AnalyzePinfu(void); // ピンフの分析
bool AnalyzeTanyou(void); // タンヨウの分析
bool Analyze34Anko(void); // 3アンコ4アンコの分析
bool AnalyzeToitoi(void); // トイトイの分析
bool Analyze112233(void); // イーペーコ
bool chk123(int hno); // イーペーコイーシャンテン試験
bool AnalyzeChitoi(void); // チイトイの分析
bool AnalyzeKokushi(void); // 国士の分析

private:
int getTenpaiNoAnalyze(); // テンパイまでの必要牌計算
int getKey(int * st); // キーの作成
};


210 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/07/30(月) 14:51:28 ]
class CMData : public CBase    このクラスは大きいのでパブリックデーターのみ出します
public:
char m_BlockNo; // ブロック番号 −1:空き 0〜:ブロックNO
CHai m_tehaiw; // 面子頭引き後の手牌
int m_TotalPointAll; // 合計ポイント
int m_TotalPoint; // 合計ポイント
int m_TotalPoint3; // 合計ポイント
int m_TotalPoint2; // 合計ポイント
char m_MachiHaiNo3; // 面子牌の待ち種類数
char m_MachiNo3; // 面子牌の待ち枚数
char m_MachiHaiNo2; // 面子牌の待ち種類数
char m_MachiNo2; // 面子牌の待ち枚数
char m_AtamaHai; // 頭牌が有る時の牌NO
// 解析結果データ
char m_outhai; // 排除された牌
int m_AType; // 分析タイプ
char m_TenpaiNo; // 後幾つでテンパイ
char m_TenpaiTsNo; // シャンテンに対する余分のターツ数
bool m_FuritennF; // フリテンフラグ
YAKU m_YakuType; // 現在の役タイプ
YAKU m_YakuTypetoN; // 役まで後N枚の役タイプ
char m_YakuNo; // 役の藩数
char m_YakuNotoN; // 役まで後N枚の役の藩数
char m_TurtuNo; // ターツの数
char m_T_XX_n; // リャンメンの数
char m_TX_X_Xn; // 2カンチャンの数
char m_TX_Xn; // カンチャンの数
char m_TXX_n; // ペンチャンの数
int m_AtamaNo; // 頭の数
int m_tehaiP[PTBLMAX]; // 手牌のポイント
UCHAR m_MachiHai3[PTBLMAX]; // 面子待ち牌データ
UCHAR m_MachiHai2[PTBLMAX]; // ターツ待ち牌データ

211 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/07/30(月) 15:06:29 ]
上のクラスを見れば、どのような分析をしていたか想像がつくと思います。
見れば分かる通り、分析のし過ぎではないかと思うほど分析しています。
これは当初、初めてAIを作る上で人間の考える通りに動くAIが目標でしたから。

探索ツリーは
14枚の牌

↓-----------------------↓
構造1・・・・・・・・・・・・・・・・・・・構造N

捨てるパターンの数
↓-----------------------↓
A牌捨て・・・・・・・・・・・・・・・・・N牌捨て

仮定のツモ牌
↓-----------------------↓
14枚の手牌1・・・・・・・・・・・・・14枚の手牌N

↓-----------------------↓
構造1・・・・・・・・・・・・・・・・・・・構造N

捨てるパターンの数
↓-----------------------↓
A牌捨て・・・・・・・・・・・・・・・・・N牌捨て

これでようやく一手先読み。

のような探索ツリーです。非常に込み入った構造で尚且つ、分析結果がけた違いに増えます
1つの手配の分析は、総てのターツパターンを出します、その数は数十から200を越える時も。
例えば 2334 は 234と3 23と34 24と33 の3種類に分類。(とても簡単な例)


212 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/07/30(月) 15:20:31 ]
添付のDummy1.dllは1手先読みだけのAIです、サンプルソースAIと同じ読みの深さしか有りません。
先読みが浅いのでスピードが速いく、それなりに強いのではないかと思います。

初めて作ったため、いろいろな試みをしています。初盤にペンちゃんや13のようなカンちゃんを
嫌うようにしてたり。私が思うような牌の切り方に近いようにしています。
その結果、ソースは膨大となり各所にバグがゴロゴロしているのではないかと思います。
雀譜を見れば分かると思いますが、面白い切り方をしたり、とんでもない牌を切ったりします。
まだまだ未完成です。

本ちゃんは二手先まで読んでいました、3手先までも作ったのですが、二手先とほぼ同じ感じです。

213 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/07/30(月) 15:37:39 ]
手の役について
役は、上にあるように、ピンフ、タンヨウ、3アンコ、トイトイ、イーペーコ、チイトイ、国士
までしか分析していません。しかし、後幾つで役が確定するかも分析しています。
難しい所の一つに、役を目指すとフリテンが増えてしまうのが悩みどころでした。
最終的な手の評価関数はそれなりなのですが、最適化までには至らず、残念でした。

先読みについて
 先読みが深いほど強いと思っている方もいるかもしれませんが。それは間違いだと
私の直感が宣言しています。それなりに理由もあるのですが、まだ、説得力があるほどの
論理的構築ができていません。参考程度に検討してください。
何処までの先読みがベストなのかは検討の余地が有ります。妄想では3手先も有れば
十分ではないかと思っています。

214 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/07/30(月) 16:09:16 ]
分析と評価式
サンプルソースの様な手牌構造を理解せずに、評価関数で優劣を決める方法は
過去の物です。いろいろ欠点が有ります。
例えば、122334 の場合1が来たら4を捨てるのですが、中の数字を好む式だと
1を捨ててしまうかもしれません。(サンプルAIは4を捨てる)
例えば 2334は234の面子を優先して3を捨ててしまうかもしれません。
23と34の2ターツと考えた方がいい場合もあります。
例えば12のペンちゃんでテンパった時、有効牌が1枚しかなかったら、場合によっては
12を捨ててシャンテン数を下げても持ちを変えたほうが上がりには速いはずでしょう。
(簡単な例)

等々いろいろ有りますが、手配の構造を理解していないと解析が出来ません。
次世代AIには、手牌構造を分析するのが必要ではないかと言えます。

215 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/07/30(月) 16:25:47 ]
作ろうとしているAI
 問題は時間なのですが・・・、過去のAIは>>197のご指摘のターツ毎の評価(分析)が
主であるかもしれません。
 次回は、人間の様にではなく、最速に速く上がれるAIを目指します。これは
最高に早くテンパルとは意味が違います。分析方法ですが、前はターツが主では
あったかもしれませんが、今回は牌の構造に焦点を当てたいと思っています。
あいまいな表現で申し訳ありません。以前のAIの分析内容を見て分かる通り
またも、複雑な事をやろうと画策しています。
 作った結果、過去のAIに負けるかもしれませんが (大汗
振り返ってみて、過去のAIはいい経験になっています。いや、あの時はとても苦労した
のですが、結果に落胆した・・・・orz、  今度は己に勝つ!

216 名前:78 ◆7rnrw5KbzE mailto:sage [2007/07/30(月) 18:27:03 ]
>>349
詳細な解説ありがとうございます。参考になることは数多いですが、その中でも
>先読みが深いほど強いというわけでもない
という示唆は非常に興味深い。

ara.moo.jp/mjhmr/statall.htm
あら氏のシミュレーション結果(↑)を見ると
先読みが深いほど好結果がでていますよね。
すると、349氏のAIにおいて、先読みがさほど影響を及ぼさない原因に
評価関数の指向が関与しているのではないでしょうか。

というのはたとえば
56m2367p3488s東南西北
という手牌があったとして、これをターツ毎評価にぶち込んだ場合
「役に平和がつく(有力だ)」という評価ができると思います。
でも実際、平和がつくと確定するのは、和了形にして4手先、
テンパイ形にして3手先になります。
つまり手牌自体は1手先までの形しか予想していないけれど、
ターツ毎評価によって、部分的にはもっと先の形まで予想している、ということになります。
その結果、手構造自体の先読みの意義が薄れているのではないでしょうか?
もちろん、そうなるのは評価関数が優れているためでしょう。



217 名前:78 ◆7rnrw5KbzE mailto:sage [2007/07/30(月) 18:32:25 ]
ちなみに、>>211の一手先読みでは一回の打牌決定あたり何秒くらいで打てます?
私の場合一打0.01秒程度なのですが、これだけ込み入った分析をした場合、やはり
いくらか時間をくってしまうのでしょうか?

218 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 18:53:32 ]
>>134>>135
たいして高速化にもならんとは思うが、一応賛成。l

で、MJexeIO.DLLという東風荘をプログラムから操作するDLLと同じ関数にしたらどうかな。
東風荘でも動かせるしね。

関数仕様はこれ。
ttp://www.interq.or.jp/snake/totugeki/MJexeIODLLfunc.htm
まずは、全部は必要ない。

MJSimのデータ仕様は、無駄が多いし、わかりづらいと思う。
例えば、対戦相手の手牌のフーロしていない部分とかも見えるが(当然無効だが)、そんなの必要ない。


219 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 19:21:15 ]
>>218
相手の手牌等のデーター領域はあっても中身は0で見えないようになってる。
卓で見える物しか見えない。

220 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 19:32:09 ]
>>218
インターフェース用DLLを誰かが作ればいいんだけどね。私は時間がとても・・・

MJSimで、1つのAIに、2つのAIを繋げて動作を比較するツールを作ってる。
これ公開するから、参考に誰か作ってくれないかな? と期待。

MJSim
 ↓
動作比較DLL
 ↓ ↓
AI1  AI2 (読み込まれた2つのAI

221 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 19:38:29 ]
ルールは「まうじゃん」
ホストも「まうじゃん」
じゃなかったんだけ?

222 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/07/30(月) 19:56:28 ]
>>217
時間については計算したことがありません。どの様に算出しましたか?
ダミーなら多分0.01以下ではないかと思います。
MJSimの実行が1秒間に100回以上しているので。
また、本ちゃんの二手先でも、けっこう速いのです。
手が染まっている時は遅いのですが、そうでない時は
ダミー並とは言いませんが、早いです。
分析する必要があるのか無いかは、事前にチェックされ枝狩りされています。
手配の状況でスピードは数十倍以上違い産ます。

分析の種類が20-30以内の時と、200近くの時のその先の枝の数を想像してみてください。
極端に解析時間が違います。

読みについては後でまた。

223 名前:78 ◆7rnrw5KbzE mailto:sage [2007/07/30(月) 20:18:52 ]
>>222
切り番時、14枚の手牌+周辺情報(場に見えている枚数、ドラ等)を与えて
打牌選択関数を呼び出してから、その結果が出るまでにかかった時間を計ってます。
実質1手打つのにかかる時間ですね。ただしリーチ後のものは除いています。
ちなみに今計った所、一手あたり平均0.0087秒でした。

2手先で十分早いとなると相当なものですね。私の場合平均2秒ほどかかってしまいますから・・・
枝かりが甘いのかなぁ・・・

224 名前:aa ◆BmUbLWewsM mailto:sage [2007/07/30(月) 20:27:45 ]
>>222
には、説明不十分でした。
>分析の種類が20-30以内の時と、200近くの時のその先の枝の数を想像してみてください。
>極端に解析時間が違います。
データ数がそのまま時間ではないです。
データー数が多いと言う事は、不必要な分析がどんどん増えてくるのです。
説明は難しいのですが、同じ構造を何度も見つけてしまうのです。
そのため、重複排除やその他の時間がかかります。

おっと、>>223の時間はダミーのですか?
計測ありがとう。

225 名前:202 mailto:sage [2007/07/30(月) 20:46:41 ]
AI作りの基本は自分と同じ打ち方させたい、ってのがあって・・・
そうするとどうしてもメンツ構成(塔子や単騎を含む)の分析が必要になるんだよなぁ
でも、もしかすると牌効率最優先の方が強いかも分からないので、今それをどうしようか
考え中・・・

226 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/07/30(月) 21:02:37 ]
>>216
>あら氏のシミュレーション結果(↑)を見ると
シミュレーションの0−3の違いはなんでしょう?
探したのですが見当たりません。



227 名前:78 ◆7rnrw5KbzE mailto:sage [2007/07/30(月) 21:09:26 ]
>>223
失礼、計測した平均時間は私のやつです。

0〜3は、それぞれそのシャンテン数未満のときに和了形まで予想して
点数計算を行う。それ以上の場合は簡易計算で済ますというものらしいです。

詳細は
ara.moo.jp/mjhmr/simulation.htm

228 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/07/30(月) 21:31:59 ]
>>216
質問です。
>先読みが深いほど好結果がでていますよね.。
先読みが深いほど好結とは、どの部分を指しているのでしょう?
期待値の値ですか?

私はきた位置の計算自体に疑問を感じているのです。
もし意見が違うのであれば、話してみたいです。

229 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/07/30(月) 21:34:02 ]
×きた位置
○期待値

230 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 22:05:19 ]
太らない程度の正しい食事と 適度な有酸素運動、そしてマッサージ
これを毎日徹底した自己管理で行えば Bカップ程度なら3年で育つ

231 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 22:07:17 ]
乳について語ってるのは誰だ!!

俺はCもあれば十分だと思ってる。Fなんざぁただの脂肪の塊としか思えん。

232 名前:78 ◆7rnrw5KbzE mailto:sage [2007/07/30(月) 22:14:32 ]
>>228
好結果の指し示すのは期待値の話です。
ただし、期待値が高いことが、好結果である必要十分条件ではないことに、
私も同意します。あくまで、期待値を一つの指標として挙げたまでです。
あら氏の期待値の重要性が実戦で崩れる要因として重大だと考えられる
ものを挙げてみます。

1.18順の到達順目(=猶予順目)が保証されていること
あら氏の期待値は、あくまで局が18順完了できる(かつテンパイ料を考慮しない)
条件下でのものでした。しかし実際は18順完了できることは
それほど多くなく、全体の85%程度は和了による終了(自家和了含む)になります。
となると、実際では条件下等によって、到達可能な順目は変わってくるはずです。
たとえば、「ダブリーがかかった1順目」という条件下では、そうでない1順目よりも
平均到達順目が小さくなり、守備を考慮しないとしても戦略が変わってきます。
仮に100順分ツモ打牌が許されるなら、全局ヤクマン狙いが正着(=期待値高)になるでしょう。
しかし、18順で全局ヤクマン狙いの戦略では期待値は高くならないでしょう。
同様に、猶予順目が違うならば、戦略も変わってくるはずです。

233 名前:78 ◆7rnrw5KbzE mailto:sage [2007/07/30(月) 22:16:52 ]
2.喰い仕掛け変化を意識していないこと
あら氏の期待値はあくまで、面前のみを対象としたものでした。
この条件では、喰い仕掛けを考慮しないため、「役をつけるためにシャンテンを落とす」
ということは少なくなります。
しかし喰い仕掛けを考慮すれば
123368m246p22688s ドラ2s
というような場面から、打1mとしてクイタン狙いは有力手です。
当然、これはフーロを想定するからこそ有力手なのであり、フーロを考慮しない
期待値評価で打1mが選択されることはないでしょう。
フーロを想定するならば、喰い仕掛け可能な役を狙う意味が大きくなります。

3.守備を考慮していない
守備を考慮しなければ、ちょっとでも効率アップが考えられる牌は残すべきです。
しかし中終盤で、ほとんど効率が変化せず、かつ将来危険になるような牌は
残すべきではないでしょう。また、相手から攻撃が入った場合、各牌に失点指標
を導入しなければなりませんが、それも考慮されておりません。

234 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 22:26:09 ]
とりあえず組んでみて思ったこと
・攻撃は何もなくても組みやすい
・守備は何かないと組みにくい
・俺よえぇ
こんなとこか

235 名前:デフォルトの名無しさん [2007/07/30(月) 22:32:28 ]
おまいら基礎が大事っていってるだろ まずは複数人で役計算を確定させようぜ
ルールは東風荘(第一)またはまうじゃんまたは今回作成したオリジナルルール

236 名前:78 ◆7rnrw5KbzE mailto:sage [2007/07/30(月) 22:32:56 ]
>>234
守備を組むとっかかりには、結構各人の判断基準で強弱つくと思いますよ。
そういう面で、麻雀打ちとして強い人は有利になるでしょう。

<テーブル>は私の中に・・・



237 名前:デフォルトの名無しさん [2007/07/30(月) 22:36:36 ]
プログラムくみやすいようにルールまとめたよ

単純化したオリジナルルール
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4765.txt

トンプウ荘ルール
mj.giganet.net/yaku.htm

238 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/07/30(月) 22:38:14 ]
>>232-233
詳しい説明ありがとうございます。

私は特に、次の点が実際と合わないと考えています。
あら氏の一人麻雀では、相手がいません。
したがって4人いる場合明らかに計算式が違います。
あら氏
期待値=自分の牌を見ただけの期待値。
4人麻雀
期待値=自分の期待値 ー 遅れた上がり順目分の他人の上がり期待値。
こらが本当の期待値です。あら氏のは一人麻雀での数値です。

いわゆる、0と3では、平均テンパイ順目が 0=11.56 3=11.76
3の方がテンパイが遅い、そして何より平均和了順目が 13.82 14.46と
0.64順ほど遅いのです。これは私にとっては大きなマイナス要員です。

コンピューター麻雀の場合、手の雰囲気が似てきます。だからこそ
こちらが上がりそうなら、他の3人もあがりそうだと考えるのが普通でしょう。
その場合の0.64順遅れは、最強を作る上でマイナスだと考えます。

AI対戦の場合、他より少しでも速く和了する事が重要だと考えているからです。
その考えからすると、和了が速い0の方がいいのかもしれません。

239 名前:デフォルトの名無しさん [2007/07/30(月) 22:40:39 ]
まずは、
数字19、2〜8、白発中、東南西北のコーツとトイツは同一視したときに
正しい飜数を返すプログラムを作ろうぜ

これで多くは判定できるよ
なぜならば、2のコーツと3のコーツを同一視しても、
それは別物であることは枚数から明らかだからだ

240 名前:デフォルトの名無しさん [2007/07/30(月) 22:44:42 ]
自牌だけ見ても駄目だぞ
なぜならば、敵は3人いるからだ
自分のあがる確率より、他人のあがる確率は3倍も多い
防御は重要

241 名前:202 mailto:sage [2007/07/30(月) 22:48:44 ]
その上がりの早いAIは、上記のような塔子分解で有効牌が多いものを選んでいく方法で
とりあえず形になるのですが、理想とするシャンテン数には届かないです。
(理想←手牌+ツモる予定の16牌(17牌)でのシャンテン数)
理想が高すぎるのもあるのですが平均1シャンテン位は低いです(中盤12〜14巡目辺り)

242 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 22:49:39 ]
自分のプログラム、ひたすら上がり判定と先読みを枝切り高速化しまくって
3シャンテンくらいから期待値計算で考える子にしてみたんだけど、
2シャンテンから考える子は正常に動いたのに、3シャンテンまでがんばらせてみたら
なんか動かなくなっちゃった。これだからバグはいくないorz

243 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 00:22:30 ]
>>235=>>237=>>239=>>240の無視られっぷりにワラた

244 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 00:34:37 ]
>>243
だってもう飽きたんだもんww

245 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 00:39:08 ]
>>242
2手先まで読めてて、さらに1シャンテン下げるのは流石にムリでは・・・
鳴いてもなんでもいいから形だけシャンテン下げるだけならなんとか。

246 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 00:56:18 ]
>>235=>>237=>>239=>>240

犬のフンは無視するのが一番



247 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 01:06:32 ]
>>245
あれ?自分なんか間違えてるかな?
2シャンテンから考える子は大体10ms以内とかだった気がするんだけど

248 名前:245 mailto:sage [2007/07/31(火) 01:15:47 ]
アンカーミスった・・・スマソ
>>241

249 名前:202 mailto:sage [2007/07/31(火) 01:26:29 ]
>>241ん?俺かw
いや、これは一手先読みだけですね。1牌切った状態でのシャンテン数が良くなる
候補の牌枚数をカウントして(有効牌数)、枚数が一番優秀な時の牌を切っていくだけ。
理想のシャンテン数というか究極が、引く予定の牌を含めた30枚でのシャンテン数として考えてます。
当たり前ですが究極には近づけませんw(エスパー能力があれば・・w)
有効牌数がそのまま塔子構成にも関わるので、そっちの評価は入れてないですね

250 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 01:51:17 ]
おぉ、そっちかw

251 名前:デフォルトの名無しさん [2007/07/31(火) 02:08:04 ]
役牌って英語でなんて言うのかな?

252 名前:202 mailto:sage [2007/07/31(火) 02:19:04 ]
ちなみに、>>249はそのまま積めません、遅すぎて。(面子候補で爆発します)

253 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 13:59:26 ]
ttp://www.excite.co.jp/world/english/
役→Post
牌→Tile
役牌→Yacpai

ううむ・・

254 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 14:06:49 ]
数牌のときはスートとシーケンスでいいと思うよ。
あと、役牌よりは字牌だろうね。

255 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 18:40:17 ]
自分で分からない言葉を使うよりは、ローマ字表記にした方がマシな場合が
多々あります。辞書を引きながら決めるなら↑の表記にした方が楽です。

256 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 18:52:10 ]
自分だけならな。
人が書いたソースでTaitoruとか使ってたら、そいつのコードは1行たりとも信用しない。



257 名前:255 mailto:sage [2007/08/01(水) 19:22:04 ]
上の役牌なら(翻牌?字牌?)ならYakuHaiでも良いとは思うが>>253を使って
PostTileなんて変にやられると逆に可読性が落ちそう。命名規則だけは保って欲しいな
>>256
それは流石に同意w


258 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 19:27:34 ]
>>256
奴の事か

259 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 19:46:51 ]
大体ローマ字表記で統一してるなぁ・・・
なんか幼稚っぽく見えるかもだがorz

260 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 20:15:43 ]
サンレンコが一般的な役じゃないことが非常に美しくないということについ最近気づいた

261 名前:255 mailto:sage [2007/08/01(水) 20:17:27 ]
半端英語とローマ字混ざるのが一番辛くないか?

262 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 20:22:30 ]
私の場合変数名は 変数型1字+ローマ字に統一してる

あがりの際の翻数を入れるint型変数なら IAgariHon

263 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 20:29:26 ]
自分の場合ある程度の長さの変数名にして、後々気になったら置換してしまうw
この時にある程度の整合性を考える。ソースは上げるまでは自分だけのもんだしw

264 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 20:36:11 ]
pc11.2ch.net/test/read.cgi/tech/1180146315/

265 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 20:35:53 ]
Hon・・・?

266 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 20:42:17 ]
>>265
今気づいた正しくするなら IAgariHan だな
翻を変換するときに「はん」ではなく「ほん」で変換してるから
間違えてしまったみたい



267 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 20:49:32 ]
>>264らじゃw
今実際に組んでる人どれ位いるのかな?
自分は今忙しくて凍結中 orz。ネタだけが増えていく・・・

268 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 20:51:07 ]
一応組んでるけどあんまり強いのできないかも

269 名前:デフォルトの名無しさん mailto:251 [2007/08/01(水) 21:37:27 ]
調べてみたところ、「役牌」は英語で value honros と表記するようです。
(ちなみに、 honors は「字牌」のことです)

あと、プログラムを作成する上でわからない用語が、「捨て牌」です。
Table が真っ先に浮かんだのですが、なんかしっくりこないし・・・

270 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 21:51:01 ]
たしか国によってルールが違うし、専門用語だし無理に訳す必要はないと思うんだけど、
ローマ字はなんか抵抗があるんだよなあ

271 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 21:54:24 ]
もうある程度特別なケースは無視しても問題ない気しかしなくなってきた

272 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/08/01(水) 23:06:04 ]
今ごろが帰宅時間だ・・・orz
ゆっくり作ってるが何時出来る事か、完成したら面白い話が出来るかもしれない。
誰かAIをUPしませんか? 78さんAIをUPしませんか?
過去のAIならUP出来るけど、何処まで何を修正していたか、全然覚えて無い。
最終ビルドしたDLLならUP可能。

273 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 23:28:04 ]
お疲れ様です。
個人的に燃料投下(DLLUP)して欲しいです。

274 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/08/01(水) 23:58:21 ]
では、明日にでもUPしよう。
>>72さん >>211の構造間違えてます。調べて最UPしまつ、申し訳ない。数年前の話なので。
ネタ投下してみる。
構造の分析について
正確な点数計算は総ての手牌構造を出す必要が有る。
ちょっとだけめんどう。
テンパイして無い手をターツまで含めた手牌構造の総てのパターンで出そうと試みる。
とても大変。
手が染まっている手では、爆発的にパターンが増え、同じ構造を何度も検出する。
私のAIでは、考えられる総ての切り口で構造を取り出しているため、同じ構造を
何度も検出していまう。これの重複を検出するため、構造のキーデータを計算し
ソートして有効な構造のみ取り出している。
>>209に有る int getKey(int * st); // キーの作成   これがそう
一種の枝狩りかな。
また、まじめにプログラムでターツを取り出すと、多分とても大変。
したがって、パターンデーターを持って、高速化している。
高速のために極一部の構造までは検出できない欠点ももっている。
事実上問題はないと判断したため、省いた。

私のAIの実装内容その1 でした。

275 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/08/02(木) 00:05:13 ]
追記
・パターンデーターでの分析は、とても高速だった。(参考までに)
その実装方法は説明せず。皆さんに疑問を投げつけて、もっといい方法が出るのを期待。
実は欠点があってね、あの時はそれしかなかった。

276 名前:273 mailto:sage [2007/08/02(木) 00:24:19 ]
パターンデータの実証は自分もしましたけど、なかなか有効でした
ただ、塔子などを考えるとまだまだ隙の多い気がしますね。自分のものは



277 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/08/02(木) 23:55:36 ]
>>273
パターンデーターはいい方法論だと思うね、もっともっと良くなると思う。
標準化するほど一般化するかも。まあ、実装方法はいろいろ出てきていいと思う。
その中で、色々なアイデアが出たほうがいい。

ネタ投下その2
高速化の一つとして実装したのが。前分析データーの再利用。
私の分析ツリーは総てデーターでツーリー構造のまま残っている。
したがって、次のツモの先の分析データーが存在している。
それを再利用している。毎回既に広がったツリーの一手先を読むだけで
数手先を詠む事と等しい。しかし、多少スピードUP程度かな。

そうそう
明らかに関係しない牌をツモった場合は、前分析ツリーで簡単に意味が
無いと判断できるので、ツモ捨てしている。この方が高速化にはとても効いている。
単発の字牌とか、手牌より意味も無く離れたパイとかね。
手の重みでその辺も固まってくるし、前の分析データが利用可能なので。
この枝狩りは大きいかも。

278 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/08/02(木) 23:59:52 ]
今話しているのは過去のAIの話で、方法論のひとつにすぎません。
もちろん、もっといい方法は多々あるでしょう。無ければ新しいAIを作ろうとは思わないし。
ネタになるか参考にだしているにすぎない。ウザかったら言って、辞めるから。

279 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/08/03(金) 00:13:27 ]
追記。
物凄いメモリーの確保と廃棄が行われているのが理解できると思う。
オブジェクトの生成と廃棄では遅いと思い。高速メモリー管理ツール
を最初は使用していたが、それでも遅いかと思い、完全にそれ専用の
メモリー管理を実装した。これ以上の速さは無理なほど速くなったと思う。
メモリーの廃棄は1ステップ、確保は最短で確保。
どんなに良い物でも、専用にガリガリにチュンナップしたものが早いのは
当たり前と言う事で。
この辺は正直、趣味に走ってます、あははははは・・・・暇人だ・・・・
データーツリー構造の管理も趣味だよな〜・・・・orz
趣味が理解できる人だけ読んでちょ。

280 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/08/03(金) 00:29:10 ]
注意!
しかしだ、そんなに強くないAIであった(泣き
(実はもっと色々組み込んであるんだよ、戦術の話一言も触れて無いし・・・・・・orz)
私の落ち込みは、想像できるだろうか・・・・・・・・・
だって、結果が最速が強そうだったから。今度は最速でGOだ。

281 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/08/03(金) 00:30:48 ]
×戦術
○戦略

282 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 00:33:12 ]
ゴタクはいらんから早くあげろ

283 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/08/03(金) 00:40:13 ]
正直、こんなに話したAIをUPするのは恥ずかしい。失敗作としてみてちょ

ttp://uproda11.2ch-library.com/src/1119634.zip.shtml
PW=MJSimAI

284 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/08/03(金) 00:41:44 ]
>>282
うざかったか、じゃもう解説は止める。

285 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 00:43:10 ]
ウザイ
手短に3行でまとめろ

286 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 00:51:55 ]
他にネタもなく何か有益な事書くわけでもないのに止めるなよ



287 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 00:53:40 ]
>>284
いや、自分は面白いと思って読んでる。
だらだらでも何でもいいから好きなように書いてくれ。

288 名前:273=286 mailto:sage [2007/08/03(金) 00:59:52 ]
で、落とせません orz
それぞれの牌種は独立なので牌種ごとに捨て候補の牌と評価値を保持(上位2つずつ位)させて
引いた牌の種類の所だけ更新する。
と言う方法も浮かんだが、手役を絡むと面倒かも。
捨て牌を選ぶ時に有効牌のリストを用意させてしまうと言う手もあるかな?(それ以外は計算せずに、
もしくは切り上げた計算をして、ツモ切りとか。←自分の思考に近い方法)

289 名前:デフォルトの名無しさん mailto:251 [2007/08/03(金) 03:04:25 ]
麻雀英語に関するいいHPを見つけた。

reachmahjong.com/

>>349
落とせません><

290 名前:78 ◆7rnrw5KbzE mailto:sage [2007/08/03(金) 03:33:28 ]
>>349
2chのような平均的に「できの悪い」人間が多く集まる空間では
著しくできの良い人間を貶めようと働くことがしばしばあります。
>>282>>285のような者がそうです。彼らは「できの良さ」を披露されると
怨恨感情を発火させて反発し、呪詛を垂らします。
このような連中の発言を真に受けることは愚行に他なりません。
いったい氏の書き込みと>>282のウザいとの感情に、なんの関係がありましょう。

>>280で語ってきたことは、我々にとって役に立つ・おもしろいものだと
判断されたからこそ書き込んでくださったのでしょう。
その判断は正しい。この水準での具体的なコーディング上の工夫を
詳細に説明した記載はいったいどこにあるというのでしょうか。
かのまったり麻雀のブログですら無かったことです。

氏は麻雀AIの分野について現時点で世界一「ためになる」レスをしてくれていた。
これは自覚されてもよいことかと。

そしてAIをDLしそこねた・・・再UPを!(泣)

291 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 03:58:10 ]
全く同感だ

292 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 05:35:49 ]
ためにはなるかもしれんが、
2chで自分語りする奴ほどうざいのもいないぞ。

293 名前:78 ◆7rnrw5KbzE mailto:sage [2007/08/03(金) 06:13:49 ]
>>292
確かに、君のような無能な人間が際限なく自分語りを繰り返してきたのが
君にとっての2ch像なら、この類ほどうざいものはないだろうね。

ところで、君が抱く個人的心情(=2chで自分語りする奴はうざい)を吐露する
ことそれ自体が、「無能の自分語り」に帰着してしまっていることに自覚的かな?
君は「自分語りはうざい」という見地から見てうざいし、ためにならない発言をする
奴はうざいという見地からも輪をかけてうざいし、識者に対する怨恨が垣間見られて
醜くうざいね。

349氏のような優秀な人材が、君のような無能の心情や能力水準に合わせる必要が
どこにあるというのだね?むしろ、2chや君にしてはいささかレベルが高くなった
このスレにおいて、『うざい』と形容されがちなのは君のような立場だということを自覚したまえ。

294 名前:特に「自覚したまえ」の辺り mailto:sage [2007/08/03(金) 07:37:24 ]
どうでもいいが、確かにうざい。

295 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 08:43:18 ]
78がこんなに痛い子だとは思いませんでした。

349の書き込みは歓迎だが、
>>277-280の連投に関しては、どうかと思う。
これからは少し熟考して簡潔に纏めてみては?

296 名前:251 mailto:sage [2007/08/03(金) 09:15:51 ]
なんだこの流れ( ^ω^)・・・



297 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 09:24:44 ]
349はえらいけど78はバカだ

298 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 10:51:10 ]
レベルの低い人物→>>78>>349 より低いアホ→他大勢 

299 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 12:42:58 ]
>>295
どうかと思う、だけでは難癖のように取られてしまうかも
内容のある長文もあれば、内容のないものもあるわけで
内容がないと思うなら、どこを、なぜ纏めたほうがいいかも添えてあげなよ

どうかと思うから、ではなく、こう思うから、のほうが意図が伝わるかと

300 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 12:51:02 ]
>>298
目糞鼻糞

301 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 12:54:34 ]
平凡な人間はできる人間を貶めて、自分らと平等化しておかないと悔しくてしょうがないのだ

302 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 14:06:14 ]
「議論しましょうよ〜」by12人の優しい日本人

303 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 14:59:21 ]
ジンジャエール!

304 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 15:02:37 ]
>>301
自己紹介ですか?

305 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/08/03(金) 15:36:13 ]
正直、こんなに話したAIをUPするのは恥ずかしい。失敗作としてみてちょ

ttp://uproda11.2ch-library.com/src/1119634.zip.shtml
PW=MJSimAI

MJSimの実行環境及びサンプルAIを再度UP

uproda11.2ch-library.com/src/1119738.zip.shtml
PW=MJSimEXE

306 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/08/03(金) 15:49:42 ]
昔の話ですが、MJSim作者宛に。
 私はMJSim作者さんに恩義が有ります。2chはそんなに見ないのですが。
たまたま見た時、麻雀ホストを作る話が出ていて、気軽な気持ちで参加したわけです。
当時、私からの話は曖昧な事が多く、もっと具体的な話を期待されているのが分かっていましたが、
作ってる状態の時はなかなか出来ませんでした。
 いや、理解はしていたけど、なかなか出来ませんでした。MJSimの出来は素晴らしく
何らかの形で恩をお返しで着ればと思っていました。
いま昔できなかった事を、解説と言う形で公開して、お返しが少しでもできれば嬉しいです。
公開私信失礼しました。



307 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/08/03(金) 15:54:07 ]
上のAIUP先ミスです。

uproda11.2ch-library.com/src/1119740.zip.shtml

308 名前:349 ◆XrG.ETMFv6 mailto:sage [2007/08/03(金) 16:26:40 ]
色々意見はあるようですが継続しま。

ネタその3  評価関数について。
>>209
>bool tehaiCompar(CTatsu *pTD); // 手牌の優劣を比較、自分が低い:true, 以外:false
>bool tehaiComparTenpai(CTatsu *pTD); // テンパイ時の手牌の優劣を比較
 評価関数は2つ持っている。それはテンパイになるまでの評価関数と
テンパイになった時の評価関数である。簡単に言うと、テンパイになった時
何を捨てれば一番いいかとそれ以前では違うと考えたからです。
麻雀をやっていれば分かりますが、テンパイの時何を捨てればいいのか考えるでしょう。
それ以前と明らかに性格が違うと考えたからです。

テンパイ時の評価式は
1.役が多い方を選ぶ
2.待ちが多い方を選ぶ
3.ポイントが多い方を選ぶ

上の順番の優先順位です。今思うと1,2逆の方が良かったかも・・・

テンパイ以前の評価式は、ずいぶん悩みました。分析データーが9種類も評価してた、
何をどのような優先順位でやるのかを。今見ると役が優先ぽいですね〜
これじゃテンパイ率が低くなってしまう、残念。
 スピード有利の確信は徐々に育っていきましたから。
それに、戦略追加作業がけっこう大変で、そちらに頭が切り替わってたし。

今思うと、平均上がり点はそんなに高くなかったような・・・・・






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<253KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef