09/08/16 07:17:18
>>41
役の判定を手続きで考えると複雑すぎてはまるよ。
まず、牌じゃなくて子と状態(場や鳴きの有無など)を与えて役判定を行うメソッド
(戻り値は、符と翻と点数と役のIDのリスト)を作成する。
それが出来たら、現在の牌で作れる全ての子のリストを作成して、そのそれぞれに対して
上記のメソッドを呼び出すようにする。結果、一番点数の大きいものを選択している。
気をつけるのは同一点数の時だが、その場合翻を優先している。
翻も同一の場合は、なんらかの順番が必要だけど(見つかった順とか)どれになっても
実害はないから、それほど神経質にならなくてもいい。
ただ役満だけは変な形のものがあるので(天和とか国士とか)先に判定する。
青天井の場合は、特殊な役満だけ先に計算して、一般的な子の形を持っているものは、
最後に判定し、該当するものがあれば比較リストに繋いでおけばOK。
ちょっと力業だが、これがシンプルかつ、ルールに対する柔軟性があっていいよ。
43:デフォルトの名無しさん
09/08/16 14:18:42
役の判定プラグラムをどこで使っているかにもよるが、
間違いが許されない処理だけに、ステップ数が増えても
全ての組み合わせを網羅してから一番点の高い役を
求める仕様が必須と思われる
44:デフォルトの名無しさん
09/08/16 14:23:03
とはいえ、頭が決定している時点で、組み合わせは
かなり限定されている。
はっきりいえば、
111222333
という並びに対して、
① 123 123 123
② 111 222 333
の2パターンを求めるだけ
しかし、暗刻だからと言って②しか求めないパターンだと即アウト。
45:38
09/08/16 18:15:35
>>42
処理はだいたい一緒?
1.分割しやすいようにデータ形式の変換
2.牌の分割(再帰)、和了牌の面子も決定
2-1.過去と同じ分割なら戻る
2-2.役を計算しやすいようにデータ形式の変換しつつ連底の計算
2-3.役の数え上げ
2-4.スコア計算(包込み)
2-5.スコアが最大になるなら選択
問題は2-3がif文の塊になっていて保守性が極めて悪いこと。
10Kbyte'sで400行ぐらいなんで、もう少しコンパクトか、バラしたいところなんだけど、
いい方法がないかなと。
>>44
分割は再帰かハッシュだよね。
46:デフォルトの名無しさん
09/08/16 22:34:18
>>45
2-1~5の部分を再帰にしないで、まず子分割をすべてリストアップして
結果用のクラスに設定して、コンテナに格納してる。
爆発的には増えないので、その方がデバッグも楽だよ。
数え上げが終わったら、コンテナから1つずつ取り出して点数チェックをやり
結果用のクラスに結果を書き込み、ソートしながら別のコンテナにポインタだけ
書き込んでる。
分割するところと、評価するところを完全に分離してコンテナで渡してるところが
ポイントかな。子(順子とか刻子とかいうアレね)の状態にしてから渡すと、
2-3はかなりすっきりかけるよ。
47:38
09/08/17 01:08:28
>>46
牌の連続したところを取り出して、ハッシュにかけるのは検討しました。
ベンチで効率1.2倍で、コード数が1.5倍だったので、トレードオフにかけてやめました。
面子の状態にするのは牌分割の部分でやってますね。
連底を計算しながら面子の個数を数えて、役の判別の部分では
暗刻数が4で対子数が1であれば四暗刻とか判別させてますが、
if文が37個もあると、見た目も保守性も悪いし……ということなのです。
(メソッドは分けてありますが、一つのクラスにいれてるのも問題かも。)
別の角度から、練り直してみます。
48:デフォルトの名無しさん
09/08/19 02:17:51
不安だったので、自作のライブラリでも>>33を試してみた。
…正しく判定できて一安心(^^
>>47
役の判定は、ある程度はまとめることができても、それでも
if文の羅列になってしまうのはしょうがないと思います。
49:デフォルトの名無しさん
09/08/22 16:44:42
コンピュータはどれが緑一色に該当するのか
理解できません><;
そのため役確認の度ごとに、毎回if文で該当する緑一色に
牌を判別にしないといけないんです><;
50:デフォルトの名無しさん
09/08/22 21:39:53
>>49
緑一色を目指すAIって作りにくいよね
っていいたいのかな?
51:デフォルトの名無しさん
09/08/22 23:00:32
>>50
いや、おま……いくらなんでもそれはないだろう。
52:デフォルトの名無しさん
09/08/23 16:52:44
>>49
っ[テーブル]
53:デフォルトの名無しさん
09/08/23 19:29:42
そんな役は気にしない方がいいんじゃね
54:デフォルトの名無しさん
09/08/25 01:42:28
緑一色は発が必須かどうかでもめる
55:デフォルトの名無しさん
09/08/27 23:51:13
おっと、プンリーさんも忘れるな
56:デフォルトの名無しさん
09/08/29 15:37:49
結局、緑一色は発なしでもOKってことで
いいよな??
57:デフォルトの名無しさん
09/08/29 16:16:43
foreach(手牌全部){
if( 2,3,4,6,8s,発のどれかではない ){
return FALSE;
}
}
return TRUE;
58:デフォルトの名無しさん
09/08/29 16:32:16
それを50近くある役に全部適応してたら
if文だらけになんな
59:名無しさん@そうだ選挙に行こう
09/08/30 13:43:10
>>58
役ごとに分ければすっきりするよ
60:名無しさん@そうだ選挙に行こう
09/08/30 19:12:27
やっぱし大量のif文の整理は避けられないか
61:デフォルトの名無しさん
09/09/28 21:42:45
で咲の脱衣麻雀はまだなのか?
62:デフォルトの名無しさん
09/10/13 08:30:34
自分は絵描きだけど、ソース用意してくれれば絵は描くよw
でもゆくゆくはキャラごとの特殊能力とかも加味していきたいし、
そういう特殊能力の解釈の仕方が難しいかもね。
63:デフォルトの名無しさん
09/10/13 18:44:28
ぎゅわんぶらあ自己中心派のゲームとかは面白かったな
ゴッドハンドが地味に強かった
64:デフォルトの名無しさん
09/10/25 01:43:04
ぎゅわんぶらあ自己中心派が再販されると
きいて飛んできました
65:デフォルトの名無しさん
09/10/25 16:18:24
>>56
ダメ
66:デフォルトの名無しさん
09/10/26 10:08:06
>>65
ローカルルールで發無しを 認める・認めない を選択できるように
すればいいだけだろ。
67:デフォルトの名無しさん
09/11/09 18:50:47
このスレ復活してたのか
即落ちして終了したのかと思ってたよ
68:デフォルトの名無しさん
09/12/29 01:17:36
上げ
69:デフォルトの名無しさん
09/12/29 01:47:23
sage
70:デフォルトの名無しさん
10/01/18 05:12:36
あげ
71:デフォルトの名無しさん
10/01/26 21:01:46
ない
72:デフォルトの名無しさん
10/02/09 17:49:03
とでも思っているのか
73:デフォルトの名無しさん
10/02/10 00:56:47
テンホーチーホー連発させればいいだけだろ
74:デフォルトの名無しさん
10/03/06 09:36:05
そうでもないよ
75:デフォルトの名無しさん
10/03/27 13:12:15
ちゅーれん出たage
76:デフォルトの名無しさん
10/03/27 13:20:21
おまえは明日しぬ
おめ
77:デフォルトの名無しさん
10/04/08 12:11:49
この麻雀の問題、あなたはプログラミングできますか?史上最大のコーディングスキル判定
スレリンク(news板)
78:デフォルトの名無しさん
10/04/23 09:49:50
アミナがバファリン漬けにされてて、高津さんは実はひどい人と発覚
したあたりまでは読んだんだけど、その先どうなったんだろう。
ていうか、Kを庇って死んだチンピラが浮かばれないぜ・・・
そういう漫画だけど。
79:デフォルトの名無しさん
10/05/14 11:59:49
そろそろおまいらの本気が見たい
80:デフォルトの名無しさん
10/05/14 14:21:23
近代麻雀オリジナルに凍牌のスピンオフが載ってたね
81:デフォルトの名無しさん
10/05/14 22:52:54
あのリモコンは吹いた
82:デフォルトの名無しさん
10/05/18 06:25:42
URLリンク(japanese.joins.com)
83:デフォルトの名無しさん
10/06/05 05:54:23
1000なら次スレですごい脱衣マージャンがアップロードされる
84:デフォルトの名無しさん
10/06/22 07:18:44
それは
85:デフォルトの名無しさん
10/06/27 01:18:35
君が見た光
86:デフォルトの名無しさん
10/06/27 22:20:52
>77の問題
C++の勉強を始めてから2日目で挑戦してみたんだけど
プログラム作るまでに5日かかった。結果正しく出たよ。
87:デフォルトの名無しさん
10/07/04 10:00:30
天鳳shirou_0のタメロンタメツモ逆切れ粘着ストーカーが最強でしょ
88:デフォルトの名無しさん
10/07/17 05:40:20
>>86
ソースは上げろ
89:デフォルトの名無しさん
10/07/18 03:25:54
URLリンク(cmj3.web.fc2.com)
なんか作ってみた
90:デフォルトの名無しさん
10/07/18 12:36:39
>>89
goggle思い出した
91:デフォルトの名無しさん
10/07/18 13:15:04
>89
まだ読んでないがよくやった
92:デフォルトの名無しさん
10/07/18 23:50:47
感動した
このスレを定期巡回してきて
よかった
93:デフォルトの名無しさん
10/07/18 23:58:22
>>89
ほれてまうやん
94:デフォルトの名無しさん
10/07/19 00:04:52
>>89
素晴らしい
一年前に欲しかったサイトだ
95:デフォルトの名無しさん
10/07/19 01:11:16
1年前なんて言わなくても
今であっても全然嬉しいサイトです ><;
96:デフォルトの名無しさん
10/08/02 15:22:24
夏厨来いよ
97:デフォルトの名無しさん
10/08/08 16:45:11
なっちゅ><
98:デフォルトの名無しさん
10/08/19 06:20:50
てすと
99:デフォルトの名無しさん
10/08/29 15:35:26
おいそこの夏厨達!
夏休みの課題として出したプログラム、用意できただろうな?
100:デフォルトの名無しさん
10/08/31 18:58:21
100
101:デフォルトの名無しさん
10/09/15 23:44:21
※麻雀ロジック研究会※
スレリンク(gamedev板)
102:デフォルトの名無しさん
10/09/21 10:36:16
麻雀 和了り判定・シャンテン数計算プログラム
URLリンク(paranantoka.vs.land.to)
103:デフォルトの名無しさん
10/10/12 16:59:55
生きてる?
104:デフォルトの名無しさん
10/10/12 17:06:04
死んでる
105:デフォルトの名無しさん
10/10/17 01:56:46
麻雀プログラムWiki
URLリンク(www26.atwiki.jp)
麻雀シミュレータ MJSim
URLリンク(www26.atwiki.jp)
106:デフォルトの名無しさん
10/11/02 21:14:52
11月だ
そろそろ本気出そうぜ
107:デフォルトの名無しさん
10/11/23 10:20:40
来年の11月に期待
108:デフォルトの名無しさん
10/11/24 19:29:17
マッタリの人が最強の麻雀プログラムをしてるのに
このスレがある意味が分からない
109:デフォルトの名無しさん
10/11/25 01:18:35
本当に最強なのかアルゴリズムを
検討しないとわからないだろ
マッタリはソースが公開されていないのに
何故このスレに意味がないと言い切れる?
110:デフォルトの名無しさん
10/11/25 01:48:28
まったりってCPUの思考ルーチンは共通だよね。
強い打ち方って一通りじゃないからいくつかタイプ作ってほしいけど大変すぎるか。
111:デフォルトの名無しさん
10/11/25 01:52:29
攻撃型
速攻型
防御型
の3パターンはあっていいと思う
112:108
10/11/25 06:30:58
>>109
正直、熱に浮かされてた 仰るとおりだ すまんこ
>>110-111
確かにこう、強さ(スカラーで表せるとする)を無数の変数(攻撃性とか防御性とか)
でプロットできたとしたら極値が出るのは一箇所とは限らない気がするな
113:デフォルトの名無しさん
10/12/03 16:10:40
他の3人の打ち方との相性もあるから最強なんて無い
114:デフォルトの名無しさん
10/12/04 16:42:44
>>113
お前良くバカって言われるだろ
115:デフォルトの名無しさん
10/12/07 00:32:10
l
116:デフォルトの名無しさん
10/12/18 21:35:09
ところで将来最強の麻雀プログラムを決めるための対戦を行なうとしたら
やっぱり百万回勝負とかなのか?
117:デフォルトの名無しさん
10/12/23 15:00:32
>>116
むしろ逆で、4回だけとかの短期決戦で決めた方がいい
118:デフォルトの名無しさん
10/12/23 16:02:28
リアルな話だとここぞって時に勝てる奴が本当に強いんだろうけど
プログラムにそれを求めるのは酷だぞ。
やっぱ回数重ねないと。
119:デフォルトの名無しさん
10/12/24 00:00:06
>>118
だから将来の話さ。 今は100万回勝負でいいよ。
120:デフォルトの名無しさん
10/12/24 01:24:50
甘えるな、今決めろ
121:デフォルトの名無しさん
10/12/28 21:04:02
100万回勝負だとすると「学習」が有効になってくるよな たぶん
122:デフォルトの名無しさん
10/12/28 22:47:11
それないわ
123:デフォルトの名無しさん
11/01/11 15:53:02
>>121
正しく無いだろ
124:デフォルトの名無しさん
11/01/22 01:11:41
>>123
100万回分のデータを取り込んで、相手の打ち筋を解析することができる!
125:デフォルトの名無しさん
11/01/22 02:33:13
Python最高
126:デフォルトの名無しさん
11/01/22 18:14:23
>>124
その間負けつづける気なのか?おめでたいな。
127:デフォルトの名無しさん
11/01/22 18:41:51
>>126
負けなきゃいけないのかw
128:デフォルトの名無しさん
11/01/22 19:37:21
>>126
何も知らされている状態で、最初4人打てば、最初の1、2回は
それぞれ公平な条件で麻雀を打つことが出来る。
しかし、「運の要素」が色濃い「麻雀」の仕組み上、沢山のゲーム回数を実行しないと
各プログラムの強さを決定することが出来ない。
その場合、各プレーヤーの捨牌やアガリ傾向を記憶し解析する
「学習機能」が実装されている方が有利となる。
純粋に麻雀ゲーム単体に強いプログラムとするのか、それとも
沢山ゲームを実行した場合の「学習機能」を許容するのか
議論の分かれるところ。
129:デフォルトの名無しさん
11/01/22 23:10:39
学習…プッ、 作ってから言えw
130:デフォルトの名無しさん
11/01/23 00:39:21
解析が出来ればそりゃあしないやつより強いだろうなぁ。
ひどく難しいけど。
131:デフォルトの名無しさん
11/01/23 00:41:56
だから何故、「麻雀で学習すると強くなる」 と言う理由を証明をしろ!
無自覚に学習最高と宗教するな。
132:デフォルトの名無しさん
11/01/23 01:02:15
>>131
放銃しにくくなるだろ
133:デフォルトの名無しさん
11/01/23 01:11:20
「麻雀で学習すると強くなる」 ことを一々証明しないと
理解できない???
宗教?????
つか、これが、「ム板」住人の発言??
これマジで書いてるの?それとも、ネタで書いてるの?
あぁ、実は小学生が書いてるってことでいいよな??
134:デフォルトの名無しさん
11/01/23 01:31:18
小学生相手にこれからわかりやすく説明するけど、ム板の住人なら、
何でもバカの一つ覚えのように「証明しろ」と
頭の悪いことを書くのではなく、これこれこーいう理由で
「お前の理屈は間違ってる」って書くように心がけろよ。。。
135:デフォルトの名無しさん
11/01/23 03:53:10
ただ脊髄反射で煽ってるだけだろ。
無視しとき。
136:デフォルトの名無しさん
11/01/23 13:22:10
お前らが、夢想に夢を見るのは勝手だが、まずは作ってみろ分かるから。
それが出来ないのなら、意味もなく学習学習と騒ぐだけの、無自覚な宗教家だw
137:デフォルトの名無しさん
11/01/23 13:36:20
>>136
夢を見るのは勝手だが、まずは作ってみろ分かるから。
138:デフォルトの名無しさん
11/01/23 13:57:55
俺が作ってないとでも言うのか?
同じ土壌に立ったら議論しよう
139:デフォルトの名無しさん
11/01/23 14:06:32
>>132
具体的にどう放銃しにくくなるかkwsk
140:デフォルトの名無しさん
11/01/23 20:34:09
プログラミングで麻雀を打たせるメリットはただひとつ、決まった打ち方をずっとできるという点。
だから麻雀なんていう謎のゲームにおける、成績の比較ができるようになる。
141:デフォルトの名無しさん
11/01/24 16:39:38
>>134
わかりやすい説明wktk
142:デフォルトの名無しさん
11/01/24 20:35:36
>141
>演算速度世界一のスパコンがあっても無意味だよなぁ
それも然り、その投資に見合うコストを将来を含め回収できないなら
無意味そのものである。作ればいいなら馬鹿でもできる。
現実の地球シミュのそれは賢さがない愚民の金をドブに捨てる作業でしかない。
統合失調症になると自分ではどうにもできない、その俺的希望の未来が現実なると
確信してしまう。一言でいえば空気が読めない。意味を写像できない。
143:デフォルトの名無しさん
11/01/24 23:50:29
>>142
は何処かのレスの誤爆かな、他スレでまったく同じものを見た。