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

このエントリーをはてなブックマークに追加
1桜井章一
できたら、NASAやるから。
2
できた。テンホー率100%。最強の麻雀プログラム。
漏れちょ-天才プロブラマだけど、麻雀しらないからなぁ〜
5デフォルトの名無しさん:03/02/05 21:21
どうやって最強を決めるんだ?
まず、最強の麻雀プログラムの定義からいこうか。
187 名前:デフォルトの名無しさん[] 投稿日:03/02/05 21:00
>>177
>麻雀をちょっと単純化して
>駒の数を
>9*4*4=144とする。
>面倒なのでダブりがないと仮定して、ちょっと複雑にする。

もっと詳しく書いて下さい。意味が全くわかりません。
駒って何ですか?
Pai nextPai = taku.getPai();
麻雀って役がそろいそうな確率を状態が変わるごとに出して
一番確率が高いものを選んでいくだけだろ。
相手の牌を読むのは無意味だね。どうせ分からないんだから。
知る必要があるのは相手が持っている牌の確率とほしい牌の確率だね。
今度は「おまいら最強の〜プログラムしてみろよ」スレの乱立が始まるんですか?
>>11
じゃ「ばばぬき」キボンヌ
「おまいら最強の友枝小学校運動会プログラムしてみろよ」とか?
14デフォルトの名無しさん:03/02/05 21:57
>>13
もちろんラストは教職員リレーだな
>>13
もちろんアンカーは体育の先生だな。
>>9
一番確率が高いだけじゃなくて、上がったときの点数と確率を比較して
一番点数の期待値が高い役を探すんじゃないかな?

>>10
典型的なのは分かると思うけどな。
タンヤオ系とチャンタ系とかなら簡単なチェックで推理は出来そうだ。
17デフォルトの名無しさん:03/02/06 05:49
ここから確率の話になります。




んなわけないか、麻雀程度の簡単なプログラムに興味がある奴いなそーだし。
18デフォルトの名無しさん:03/02/06 10:21
オンナのこがぬぐ確立あげてくだしい
19デフォルトの名無しさん:03/02/06 12:47
よし、麻雀暦5年の俺が麻雀の知識をすべて捧げてやろう
20YAHOO!無料:03/02/06 12:49
YAHOO!BBのユーザーへの特報!!!

今YAHOO!BBでADSLを利用されてる方。

月額料金を無料にできる方法をお教えします。確実な方法です
し方法も一つではなく何通りお教えしますので、ヤフーbbのユ
ーザーである限り料金発生なくずっと使えます。

興味のある方は以下のメールアドレスに連絡ください。
料金をとめる方法は少しの謝礼でお教えします。
[email protected] [email protected]
 よろしくお願いします。
21デフォルトの名無しさん:03/02/06 12:50
まず、一番近い確立の役に近づけるだけのプログラム
これは、弱すぎる。少し手遅れしても満貫までつくれそうなときは、
満貫作っちまったほうが強い
1手変わりで点数が増える場合も多いしな
22デフォルトの名無しさん:03/02/06 12:54
あと、打ち手の過去の打ち方を蓄積できれば強くなると思う
23デフォルトの名無しさん:03/02/06 12:59
チャンタ狙いだと、中張牌から切られることが多いが、
はじめの一打が19字牌とかで迷彩されたら、読めないだろうな
24デフォルトの名無しさん:03/02/06 13:16
たとえば、同じ色の牌だけを集めるチンイツという役がある
その場合、捨て牌が偏ってしまうため、バレバレになる
バレバレになると誰も振り込んでくれない
ということは、自分のツモあがりだけとなり、あがれる確率が低い
だけど、余裕がある場合に第一打や途中で2、3個捨てておくと警戒が薄れ、
他の3人も出してくれる確立が高くなる(経験上)
自分のツモあがりだけと自分と他の3人から出る可能性のある場合、どちらがあがりやすそうかは明白
聴牌までの期待値を1下げて、あがりやすさを3上げるような微妙な部分をどう克服するのか、、
最強への道のりは果てしなく遠いようである



※ちなみのこのチンイツは振り込むとかなり痛い点数の役です
中学生のころ、じゃんけんプログラム最強決定戦みたいなのがあった。
C言語で関数を作って、過去に相手が出した手から次の手を創造することを
その関数に期待するルールだった。乱数やそれに類するものの使用は一切禁止。

さて、概略を記すと以下のような形だったわけだ。

/* 文法が間違ってたらごめん */
typedef (int) (*func_ptr)(int);

func_ptr program1;
func_ptr program2;

そしてクラブの部員が作ったプログラムをそれぞれポインタに代入して
戦わせる形だった。
2625:03/02/06 14:10
引数には前回の手が入り、返値に今回の手を入れる。
中でstatic配列などを使ってもいいことになっていた。
意味は1:グー,2:チョキ…みたいな感じ。

見事最強の座を獲得したプログラムはこんな感じだった。

int saikyou(int) {
 if((func_ptr)saikyou == program1) {
  for(int i=0;i<1000;i++)*program2(1);
 }
 else {
  for(int i=0;i<1000;i++)*program1(1);
 }
 return 2;
}

見事な勝率を誇り優勝。
>>26
最強同士で戦わせたらえらいことに
  ∧_∧
 ( ´∀`)< ぬるぽ
29デフォルトの名無しさん:03/02/06 14:32
確率と確立を区別できない坊が多いな。
あと定跡と定石
それと香具師と家具師
後だしのプログラム作れば最強
牌データをハックするプログラム作れば最強
32デフォルトの名無しさん:03/02/06 14:48
そして、後だし同士で戦わせる
麻雀のプログラム簡単ってやつはルールしってんのかな?
ドンジャラとは違うからな。
>>33
えっ? 確率が高い手を選んだらあとは運任せのゲームでしょ(w
35デフォルトの名無しさん:03/02/06 22:25
>>34
それ初心者の打ち方だよ。

アンパイをどうよませるの?
捨て牌から相手の手をいかによむの?
相手がツモギリをした場合の処理は? うちながら相手の癖を理解させたりしなくていいの?

とかかなり問題は山づみ。
36デフォルトの名無しさん:03/02/06 22:32
とりあえず定石を列挙汁
役の判定一つとってもバグのないプログラムを作るのは簡単じゃないよ。
38デフォルトの名無しさん:03/02/06 22:33
では私から。
誰かがハク、ハツと鳴いたら、チュンは捨てない
>>34
じゃあはじまった瞬間食いタン決定だな。
まず、上にもあるが対極者の癖を学習することができること
これが麻雀には最重要では?
アンパイの読みとかも、基本は同じだけど対局者や
その流れで全然違う。

そしてそれを実装するためには、最初の数局は無難に打って、
相手が自分が学習した中でどのタイプの麻雀打ちかを
判断する。

逆に自分の手が読まれないように、自分のタイプはこまめに買える。
または複数タイプを混ぜるとか。


ついでに漏れは「他人にバレようが、チンイツなどの染め手ばかり狙い、
しかもオープンリーチばかりする馬鹿」です。オープンリーチ・一発・
ツモ(ドラ1以上)しか狙いに行きません。ごめん。
最強プログラムに必要なもの
・1巡ごとに見える牌の数が増えることから、相手の手にありえる何百万通り(?)ものなかからもっとも確率が高い牌姿などを常に考えておく
もしかしたら将棋より大変かもな
誰かがハク・ハツと鳴いたら、むしろとっととチュンは切ると思うが……
ただのポンなら(責任払いでも)自らチョボしたほうが安いし(をい
>>40
是非高レートで賭け麻雀しましょう。
役牌を簡単に鳴かせたら、相手のあがりを早めてしまう
役判定ルーチンを真面目に書くとけっこう汚くならない?

麻雀で勝つのには、立直とタンヤオとドラと役牌と混一だけで十分。
>>42
それは自分の手と相談してな。
安い手で張り合うのはばかばかしいだろ。 前の奴がだしたら便乗、二枚あったら頭ってかんじにしたほうが強くない?
こっちに2枚あったら、鳴かれる確率も低くなるな
>>46
おいおい…
やった奴に自信つけさせて破産させるソフトになっちまう。
裏ドラは何かも考えるようにして
相手のリーチに対して、振り込んだときに裏ドラがいくつ乗ってしまう確率があるのかとかも
普通に作ったんじゃ面白くない
声優は萌え萌えのでおながい
>>52
俺でよければ脱ぎまで担当するが?
負けてあげたら、モロ見え動画
これ最強
役判定でもいいからつくってみようよ。
まずはそこからだろ。
>>35
えっ? 読むって相手の手を完全に読めるの? 確率でしか分からないでしょ(w
>>41
>・1巡ごとに見える牌の数が増えることから、
一巡ごとに相手のありえる手の数が極端に減るねぇ。
58デフォルトの名無しさん:03/02/06 23:21
どうせ考えるだけで、誰も作らないに10うんこ
将棋もね
麻雀の牌の数は136個。自分の牌はわかるから開始時点で123個の牌のある場所の
確率を出すだけだね。1巡ごとに見える牌は増えるから調べなきゃならない
牌の数はどんどん減っていくね。
危険牌の確率は確率だが確率だけじゃない確率もあるぞ
たとえば
相手が1巡目で5を切ってリーチしてきたとする
この5が安牌であることが100%の情報で、
この他の牌の危険度が全く同じあるかと言えばそうでもない
この5がどういう形からでてきたのかたとえば455と持ってたところから出た5だとすれば、36が当たり牌となっている
他にも次のようなかたちもありえたりす(ry
まあ、自分の持ってる牌などからも微量なが情報を得てだな
などなど、確率確率確率マンセーニダ
将棋って最後まで増え続けるの?
最初の数はものすごく少ないけど
ドラ表示牌も見えてるので122牌
親なら14枚から始まるから121牌
> この5が安牌であることが100%の情報で、
ありえない
>>61
> 将棋って最後まで増え続けるの?
なにが?
65デフォルトの名無しさん:03/02/06 23:39
いや、現物でロンされてもチョンボなんですが・・・ツリ?
>>56
相手の手が確率でなく完全にわかるボードゲーム?のほうが少ないと思うな。
あがりやすさだけで判断するプログラムっていうのも
組んでみたらおもしろいかも。
>>47
そうですね、ただ自分が1枚しか持ってない状態でチュンの頭待ちだったら
まず誰も振り込んでこないので……
あと後半になればなるほど、ハクハツを鳴いた人間がチュンの頭待ち
をしている可能性が高くなるという問題もあります。
>>66
んだんだ。その点で麻雀と将棋は違うわな。
じゃんけんで相手の裏の裏の裏の裏の裏の・・・の手を考えても無駄なように、
麻雀で先の先の先の先の先の・・・の手を考えても無駄だな。
将棋と同じアプローチは通用しないのに、同じアプローチで考えて将棋よりも
麻雀が難しいといっている奴はバカ(藁
おまいら最強の花札プログラムしてみろよ
先を考えて、確率の高いものを選ぶんだぞ
>>68
全く違うものだしね。
比べる必要をまず感じないわな。
まあどっちが難しいとかにこだわる奴は放置で。
でもジャンケンとは違うよ。
あれは常に三分の一だから。
麻雀は実際強いうちかたがあるからね。
意味合い的には運の入る将棋ってかんじ?
>>70
なんの確率がわかるって言うんだよ?(藁
麻雀を確率計算で考えているページ?
ttp://kataagari0.tripod.co.jp/
>>71
運の入る将棋。
良い手の内からランダムで手を選ぶ将棋みたいなもんか。
将棋であれば相手の手が全て見えている状態から
戦略を練る。

しかし麻雀の場合は、相手の手の一部(捨牌・鳴牌)しか分からん。
その中で考えなければいけない。

この差は大きいと思うけど、どう?

ついでに実際の麻雀の場合は相手の思考時間+手の動きも
相手の手牌の内容を探る情報になるので……
マウスカーソルや視線の動きも情報として取り込まないと
(対人戦)最強にはなれないかと、思う。
まあこれも通じたり通じなかったりだけど
>>72
行動の有効度、危険度を設定して、それを参照しながら点を計算、一番たかい手を選ぶって感じか?
つーか確率は普通に存在するだろ。
どう計算したら早くできるかはわからんが。最も単純で簡単に計算出来る確率は、
アンパイが10個あったらアンパイ以外を捨てる場合振込む確率は
(全種類-10)÷全種類
> しかし麻雀の場合は、相手の手の一部(捨牌・鳴牌)しか分からん。
> その中で考えなければいけない。
>
> この差は大きいと思うけど、どう?
うん。だから全部の場合を考慮したり先の先を読むのは無意味になる。
すべては確立の世界なのだよ。ワセリン君。
>>76
だから先は関係ないだろ。過去と今だけで十分。
3という牌があったとする
この3で面子を作ろうとするには、12345が必要である
 23
 34
1 3
 3 5
 33          
となり、この3から面子完成への受け入れ枚数は多い
だが、2が場に3枚でていたとしよう
すると、3に4をツモって34(2か5で1面子完成)となっても、ほぼ2が枯れている状況では辛かったりする
2を手に入れるのがこんなんな上、25待ちで聴牌したとしても、5は出にくいからだ(みんなが使いやすい牌だから)
あと点数差など状況により、牌効率は違ってくる
>>66
現状で何かのおまけみたいに作ってある麻雀ソフトはほとんど「あがりやすさだけ」だと思うぞ。
たいてい、いんちきしてコンピュータの配牌が3しゃんてんくらいにしてあって、
あとは上がりを目指すだけ。
>>78
76の言ってることはあまりに大雑把な確率の捉え方なのでなんとも言えんが、
先を読まなくていいってことはないだろ。
今まで各々が思いつくままに挙げた話、
例えば「白発を鳴いたやつが居る」時にどうするかってのは、
実は相手の手の内、山の牌の確率的な分布に従って読めば、
先に捨てたほうが被害が少ないのか、抱えて死ぬべきなのかはおのずと得られる。
だから、思いつくままにルールを作りこむより、まともに読めるようにしたほうが強いと思うがな。
振り込む確率は違う
たとえば場に2が4枚見えていたとしよう
すると、相手は2を持っていないわけで、1待ちにするには国士無双か1の単騎待ちしかできない
この1と7の振り込む確率が同じだと思うか?
2が3枚、2が2枚、2が1枚だけしか見えていない場合も上記の理由により
7に対し危険度が段階的に違っている
俺は、白發鳴かれたときに、中を鳴かれる確率が低いとは言え、切らないほうが強いと思うなあ
確率が高い低いうんぬんのまえに万が一にも大三元に当たったら32000点(親なら48000点)
当たらなくて聴牌させて上がられても責任払い(パオ)があると16000(相手が親なら24000)払わされるし
その局は、防御に徹したほうがいいと思う
>84
ごめんなさい、レート0の麻雀ばっかりで、負けてもへこむだけなんで、
非実践的といえばそうですね…… まじに一回振り込みました(;;)

>80
なかにはきちんとやってるのもあるが、そうでないのは3シャンテンもない。
最悪な方法は、何順目に上がるかを最初に決め、コンピュータの牌を組んで、
残った牌でプレイヤーに麻雀をさせる。例えば鳴いても役が成立する場合に
わざと形だけ鳴かせることはあるだろうが……
86デフォルトの名無しさん:03/02/07 00:49
>187 名前:デフォルトの名無しさん[] 投稿日:03/02/05 21:00
>>>177
>>麻雀をちょっと単純化して
>>駒の数を
>>9*4*4=144とする。
>>面倒なのでダブりがないと仮定して、ちょっと複雑にする。

>もっと詳しく書いて下さい。意味が全くわかりません。
>駒って何ですか?
レス遅くて申し訳ない
駒は牌の意味で使ってしまいました。
ダブりがないと仮定すると、ゲームが複雑になる事はOKですか?
>>84
例えば「もし奴に中が2枚あるとしたら残りの手の内はまだてんぱいに遠い可能性が高いけど、自分は上がりやすい形でてんぱる」とか、
「白発といといでツモられても自分は飛ぶ」とか、
総合的に見て、先を読んで、リスクとリターンをはかりにかけて切るか切らないかを判断するんじゃない?
>65
リーチかけてない香具師のアタリの可能性をまったく考えていないな。
てんぱっても、1000点や2000点の聴牌だったら、話にならんな
安手で役満とは勝負したくない
白發トイトイだったとしても流局、または誰かが振り込んでくれればいいな
これが大三元で、別のやつが食らって飛べば、もっとイイ
ま、その辺を考えての総合的か
>>88
リーチしたらっていってるだろ。
それに俺にはその切った相手に対してはって意味に聞こえるぞ。

つーか実際そういう読みを実装しようとおもったら
どんなふうにするんだ?
>>88
5でロンされたら、”同順”フリテンでチョンボなんですが・・・ツリ?
字は同巡が正しいかな?
5を出したやつが5でロンしたらチョンボ
一つ目の5を見逃して次の人の5でロンしてもチョンボ
とにかく合わせ打った牌は100%誰にもロンされない
ロンされたらチョンボで2000点(親なら4000点)貰える
>>60
>この5が安牌であることが100%の情報で、

ってのが、そのリーチかけた香具師が捨てた次の瞬間だけ有効で、
その後、この100%安全という評価をどのように変更するのか述べられていない。
揚げ足取りだね
小学生の国語から勉強すれば?
今までの流れで掴み取れ
96デフォルトの名無しさん:03/02/07 01:29
宣言が必要ですか?(ワラ
最強の麻雀プログラムと謳っているスレで、現物が100%安全と威張られてもな・・・
その現物の評価をどのように変更していくのかが重要なのだろ。
>>97
現物は、そのリーチ者に対しては100%安全だと思っていましたが・・・
あなたは現物は、そのリーチ者に対しては何%安全だと思いますか?
>>88-98
厨房板に日本語を勉強するスレを建てて、どこまで省略して伝わるかを議論・調査してなさい
リーチ者に対しては何%安全かという評価はあまり意味がない。
その牌が何パーセント安全であるかが意味をなす。
ってこんな当たり前のことをぐだぐだ言うこと自体、意味がないな。
ごめん・・・スレと関係ないけどさ、
漏れちょっと今、血吐いたよ・・・
月経ですか?
全体の安全度を求める上で、リーチ者には100%安全という情報は必要不可欠
これにて終了
っていうか俺が勘違いしていたよ。
てっきりもっとまともなというか、高度なことを議論しているのだとばかり思っていた。
そんな言うまでもないような当たり前のことは議論の前提の話であってそんなことを主張する香具師などいるとは思ってなかったからね。
まずはシステム(環境)のランダムを完全読みする
次に全ての牌とランダムの関係を完全読みする
最後に八連荘を連発出来るあがり方を読む
これ最強
106マヅ゙レス:03/02/07 02:15
八連荘はローカル役でしょうが。
麻雀組めるやつ、つくってくれんかなぁ。
俺はテンパイ判定やってるレベルだからな。
考えるだけで誰も作らないに10うんこ
将棋モナー
東風荘用のbot作ってくれ、誰か
東風荘はテスト場としては最適だね
人も多いし、上の方に上がっていけば強いことが証明されるし
イカサマ最強説
112デフォルトの名無しさん:03/02/07 03:07
マアジャンは相手モデルが絶対に必要よ。
CPUが負けそうになったらジャンタクがひっくり返る
これ最強
>>113
ちょんぼやん
893相手だと殺されるかもしれないし…
CPUが殺されるかyo!
早いリーチは1-4ソウ
結局>>25-26で爆笑したわけだが
CPUが負けそうだったり配牌がわるいとエラーをだす。
119デフォルトの名無しさん:03/02/08 00:50
麻雀フレームワークを作ってみようかと思ってるんですが
麻雀の一般的なルールがよくわからないので、
その辺の解説があるページありますか?

開発は2月下旬から
言語はJAVAです
120デフォルトの名無しさん:03/02/08 00:51
というか
JAVAとC#どっちがいいですかね?

他のプログラムからも使えるように
ソケットでプレイヤーの作成ができるようにはするつもりですが
121デフォルトの名無しさん:03/02/08 01:12
ちょっと麻雀知らないなら、
そのことを冒頭で明記してよ!!
ネタと思いきや本気っぽいのも多々あるし…。
(ハク、ハツ鳴かれたらとっとと中切るとか)←あり得ないよ。
まぁ短気は斜で待てと
123デフォルトの名無しさん:03/02/08 01:39
>>122
ちゃんと変換しろ!
そんなの河の状況によるだろ!!
ってネタにマジレスしちゃったよ〜♪

今の麻雀ゲームで最強なのって何だろう?
>>121
相手より早く上がれそうで自分の手が
責任払いより大きい手になりそうなら勝負しますが何か
125デフォルトの名無しさん:03/02/08 01:52
>>124
>相手より早く上がれそうで自分の手が
>責任払いより大きい手になりそうなら勝負しますが何か

2フーロだよ?上がれそうなだけで、勝負されても他の人に大迷惑!
何を根拠に相手より早く上がれそうって言ってるの?
中でロンかもしれないのに…。。
マジレスしちゃったけど、ネタじゃなかったよね??
126デフォルトの名無しさん:03/02/08 01:54
>何を根拠に相手より早く上がれそうって言ってるの?
直感だろ

麻雀は確率推定なんだから
論理的な推測は不要でしょ。
127デフォルトの名無しさん:03/02/08 01:56
な事はない。
>126はゲーム理論の書籍でも嫁
128デフォルトの名無しさん:03/02/08 01:59
>>126
確率推定で中切るなって!
麻雀知ってるの?
129デフォルトの名無しさん:03/02/08 02:00
>>127
否定するなら、もっと具体的にかいてくれ
個所と理由ね

コミュニケーション入門でも嫁
>>127
アフォですか?
それとも、賭け麻雀しか、しないのですか?
割れポンのように、1位しか意味が無いのなら
更に、オーラスで後がないなら勝負するだろ
131デフォルトの名無しさん:03/02/08 02:06
>>130
割れポンって1位しか意味ないんだっけか?
トータルじゃなかった??
>>131
レギュラー番組だった時は、どうだか知らないけど
スペシャルは基本的にトータルで1位じゃないと意味がない
133デフォルトの名無しさん:03/02/08 02:15
オーラスで上がれば1位って時でも、
中は切らないね。
134デフォルトの名無しさん:03/02/08 02:27
おめーら頭わるいな。
ムリして通して大当たりハコテンのリスクと降りて二位以下に甘んじて次回に再起を期待するリスクを比較するんだろ。
>>134
後がないのに次回があると思ってるのか?
136デフォルトの名無しさん:03/02/08 03:54
書き込みテスト
こればっかはなー。

フリー雀荘とかならハコラス+役満御祝儀のリスクを背負ってまで勝負したくないし
タイトル戦の決勝戦オーラス、一発裏無し、南場でもノーテン親流れするルール、親がトータルトップ、で自分は満貫、白発仕掛けた奴は役満で優勝という局面で
二二二三四678(2)(3)(4)(4)(5) ツモ中 ドラ(4)
で、ツモが後一回しか無いときなんかは叩き切らないとまずいだろうし(大三元かどうかは分からないが、ここでオリたら確実に優勝が無くなるため)。
後一回じゃないや。
自分の最後のツモ(ハイテイにあらず)じゃないと100%ではないな。
>>137
今回は、あまり意味無いけど
筒子と索子の違いが想像しづらいから
次から@〜H(筒子)とT〜\(索子)を使うが良いぞ
>>138
自分の上家が鳴けば…(そんな運任せは考えたくないが)
早いリーチは14とか単騎は西で待ては、昔からある古臭い格言だぞ・・・
平均順位を基準にして最強を決めるのであれば
1位をとることよりも4位を引かないことが大切
麻雀プロで白發鳴かれてるところに、3枚(自分手の内含む)見えてない限り中を切る人なんていない(マジで)
>>124
それだけの考えで勝負するなよ
流局すれば、数万点が飛び交わずにノーテン罰符だけですむんだぞ
>>142
ツモ上がりされて、数万点が飛び交う罠
おまえが出す確率を0に近くすれば、上がられる確率も減る
ツモ上がりは、そいつ自信で引かなければいけない
こっちが中を一枚もってるだけで、残りの中を手に入れるのが難しくなってる品
つか、基本ルール決めたほうがいいんじゃない?
赤ドラ使う現代の雀荘ルールに近づけるか
普通の基本っぽい麻雀ルールに近づけるか
一発・ドラ無しの競技麻雀に近づけるかとか
ルール関係ないか
確率出して打つんだもんな
147137=138:03/02/08 05:34
>>139
一応麻雀板何切るスレでの書式にのっとって書いたんだがな。
機種依存文字なんざ使ってんじゃねえ、ということでこうしたという話なんだと。
やっぱいいかげんな状況設定じゃボロが出るなぁ、上家がリーチ掛けてるとかいう設定も要るのか。

まぁ、中で打ったら最低満貫、良くある跳満、時々倍満、滅多に無いが三倍満、最悪の役満てなわけである。
役満御祝儀がなくて万一役満ツモられるとラスが濃厚ってんなら行く手もあるかもしれないが。
>>144
最初から中を3枚持ってる可能性も、あるんだって
大切なのは中を出さない事じゃなくて、上がらせない事
だから、一意的に中を切らないのではなく
状況をみて判断する事が大切
(それこそ、安そうな他家にわざと振り込むとか)
ちなみに、やってはいけない事は
役万確定してる香具師がいるのにリーチしたりする事
点棒状況は把握できないと困るよな。
東家:24800 南家:21200 西家:28400 北家:25600 なんて状態で南家が1000点作りに向かってもどうしようもないし
2着目と11600点差でアガリトップ、お互いに子の時にリーチを掛けるのもちょっとどうかと思うし
箱飛び終了、南1局3本場、3着目、トップの親と20000、2着目と16000差、ラス目が3200点しか持ってない状況で跳満ツモってもつまらんし
4枚しかない同種牌を既に3枚持ってる確率と自分の1枚が欲しい確率どっちが高いと思う?
>>148
最悪を呼ぶ芽のひとつを潰すという点で意味はある、つうか中を切らないってのは白発と仕掛けた奴がいるという状況を見て最悪へ至る道を一つ潰そうと判断した結果じゃないのか?
通った < 他家の安手に刺さった < 刺さったが小三元のみだった < 他家の、もしくは小三元+αの大物手に刺さった < 叩かれた後他家が打った < 大三元に突き刺さった、もしくは叩かれた後ツモられた

大体大三元が匂っている状況ということは中はション牌か見えてて1枚。
残った中の在処は自分がツモってくるか、他家が切るなりうっかりこぼすなりしないと確実には知ることができない。
相手の手牌の何処から何が出てきたかを見て、持ってるかどうか推理するにしても、そのとき相手が几帳面な理牌の仕方をしている保証は基本的に無いし。
小三元のみはありえない
小三元・白・發で満貫になる
>麻雀フレームワークを作ってみようかと思ってるんですが
>麻雀の一般的なルールがよくわからないので、
>その辺の解説があるページありますか?
とりあえず、適当なソフトをダウンロードするのがいいです。

なんとなく麻雀っていうのをたまにやってるんですけど
あのマニュアルに「役作り一覧」があるのでご参考ください。
早く作って対戦させようよ。
4人が作って、同卓させる
で、100回くらい試合をして一番強いやつを作ったやつが優勝
一番強い奴が勝つ確率はどのくらいだろう?
25〜100%?
脱衣麻雀やるやつって打ち方が変。
下手な奴ほど麻雀好き。
おかげでこちらの懐も暖まります。
159デフォルトの名無しさん:03/02/08 11:35
誰か整理してください。
麻雀プログラムの基本
@麻雀牌の種類は 万子・筒子・索子の三種 9 * 4個づつ
         風牌・三元牌 7 * 4個づつ
         合計3*9*4+7*4=136個の牌
A対戦者は4名、新しい牌を一枚ずつめくって要らない牌を捨てて
 あがりの形にする。
Bゲームに使用する牌は通常 136-14=122 但し槓をする毎に+1枚
C一人の持ち牌は通常13枚 但し槓をする毎に+1枚
Dあがりとは基本的には4面子・1雀頭ができた状態のこと
 面子の種類には順子(123や678)、刻子(444や中中中)、
 槓子(2222や西西西西で槓の宣言をしたもの)の3種類があります。
 雀頭は同じ牌二枚の組み合わせ
Eゲームに使用しない牌のうち一枚はドラ表示牌となる。
 ドラ表示牌の次の牌はドラとなり一翻UP
Fその他、役や点数は下記参照
ttp://www.dec.jpn.org/~gatoh/mjrule/mjruletop.html#mjrule01
七対子
一一226677南南白白發發
国士無双
一九(1)(9)19東南西北白發中
B間違ってます
カンを1するごとに、その時のハイテイ牌を残すんです
だから、最後に場に残るのはかならず14枚
悲しいときー
オープンリーに自分がリーチしてないのにふりこんだ時ー。
人和は無いほうがいいな
人によって解釈が(上がり翻さえも)さまざまで一応ローカル役気味だし
流し満貫のほうがメジャーだ
165デフォルトの名無しさん:03/02/08 12:06
訂正します。
上記Bゲームに使用する牌 136-14=122


麻雀最強のセオリー

@早あがりではなく期待値(あがれる確率*あがった時の点数)を計算する
A期待値の計算の際には次の項目を考慮する
 1.あがれる確率に考慮するもの
  1)残りのあたり牌の数
  2)残りのあたり牌のうち相手の手配になっている数(予測)
  3)残りのツモ回数(鳴きを考慮する)
  4)自分の捨て牌の迷彩度
 2.あがった時の点数に考慮するもの
  1)ドラがのる場合
  2)海底摸月・河底撈魚・嶺上開花・搶槓・一発になる場合
  3)面前清自摸になった場合
 3.その他
  1)両面待ち以上の時は各々の期待値の合計
B自分の期待値−相手の期待値(予測)で勝負する。
Cトップをとるための必要点数を考慮する(残りの局数も)
D相手に早あがりを誘い点数を下げるため、ノーテンリーチもある
166デフォルトの名無しさん:03/02/08 12:12
E2着・3着でも構わない場合はウマも考慮する。
(配牌から)聴牌をとるまででの残り枚数も考慮予測していかないと、
そしてその場合の将来の上がり牌候補の枚数も常に。
聴牌するころには上がり牌が少なくなってるんじゃ駄目だ。(期待値が高ければいいが)
>>166
用語をしらんから説明いれてかいてくれ。
169デフォルトの名無しさん:03/02/08 12:27
ウマとは巨根のことか?
170デフォルトの名無しさん:03/02/08 12:27
>>165
1.の4)自分の捨て牌の迷彩度←いらない
3.D相手に早あがりを誘い点数を下げるため、ノーテンリーチもある←ない

あと、2.の意味がよくわからんので詳しくお願いします。
http://www.ma-jan.or.jp/rule.htm
ルールはこれでいいんでねか?
迷彩度はリーチかけて出やすいものかどうかを考えるときかな
ひっかけとか
>>170
迷彩評価は最強めざすならいるだろ。
簡単にやれば
真ん中をきると待ち有効度みたいなのから端牌いがいの牌の値を1マイナス、
またすじを100マイナスとかで
174165:03/02/08 12:35
捨て牌の迷彩は要らないですか?
ノーテンリーチはトップほぼ確定の状態で自分がたまにするので入れてみました。
2.の意味は点数が運任せなものについても点数を多少上積みして計算
しないと正しい期待値計算にならないという意味です。
ウマは1位が4位から、2位が3位から貰える点数のこと
1位はこの他にオカが入る
176165:03/02/08 12:42
>>171
私は異論ありません。
ただしリーチ一発と裏があるBルールが希望です。
>>171
そのルールは一般的じゃない
>>176
日本で一般ていったら普通それがはいるよな。
>>176
そうすね。じゃアリで。
裏ドラ以前に、チョンボとウマのところが一般とかけ離れてる
流し満貫は採用しないのか?
リンシャンの責任払いって現代の雀荘から無くなってきてるよ?
ダブル役満。トリプル役満は無し?
もっと普通の奴だせや!
・現物以外の食い替えを認める。
これも殆どの雀荘だと現物・スジの食い替えは無しになってるな
しかも、たしかプロの試合って30000点持ちの30000点返しだよね
もっとメジャーなルールのURLだしてくれ。
または全部書いてくれ。
リアルでのメジャーとゲームでのメジャーが違うんだよね
たとえばリアルだと赤ドラ・祝儀ありで、ゲームだとそれらがないものが殆ど
そしてそれらの有無でゲーム性が全く違ったものになってくる
つーか、場所によって多少ルール違うんだから、それら全てに対応してなきゃ最強とは言えん
「今夜も朝までパワフルまあじゃん」
が最強だったと思うんだがいかがか?
Bルールの一発裏ドラあるけど、カンドラ・カン裏無いってのも疑問。
とりあえず誰かルール案だしてみろ
>>187
>つーか、場所によって多少ルール違うんだから、それら全てに対応してなきゃ最強とは言えん

できるものなら、やってみれ。
ttp://www10.plala.or.jp/rascalhp/
192165:03/02/08 13:22
荘風  東南戦
開始点 25,000点
返し点 30,000点
確定点 30,000点超
ウマ 10-30
連荘 テンパイ
途中流局 連荘
割れ目 なし
焼き鳥 なし
一発 あり
193165:03/02/08 13:23
裏ドラ あり
槓ドラ あり
ダブロン あり
トリプルロン 流局
くいタン あり
赤牌 各5一枚
あがりやめ あり
チップ なし
繰上げ満貫 なし
積み場 あり
人和 あり
流し満貫 あり
喰い変え なし
トビ あり
25000持ち30000返し
食い替え一切無し
ドラ・裏ドラ・カンドラあり
リンシャンカイホーによるパオ無し
チョンボは満貫払い
人和は無し
三倍満は11翻から数え役満13翻から
ダブル役満あり(役満の重複を認める)
四暗刻単騎待ち・九連宝燈9面待ち・国士無双13面待ち・大四喜和はダブル役満
流し満貫あり
195165:03/02/08 13:27
漏れの打っているフリー雀荘のルールでは
これのチップありで打っている。
さらに先ツモ有り(藁
2翻縛り無し
なかなかよいと思う。
>>192-194
それはそれでおいといて

とりあえず、東風荘のルールでいいかと。
ダブロンは頭ハネにしようよ
赤牌無しでいいんじゃねーか
モロ雀荘ルールじゃねーか
さらに四家立直も続行って書きそうだな
200デフォルトの名無しさん:03/02/08 13:32
>>198
なんで?
とりあえずどんなんだ?
おまえらアフォだな。
>>1を見てみろよ。桜井章一だぞ。

ここは雀鬼会ルールで。
とりあえず、もまいらビデオ屋で「真・雀鬼」シリーズ(清水健太郎主演)を借りて来い
麻雀知らんやつでもなんとなく分かる
東風荘麻雀ルール
ttp://mj.giganet.net/yaku.htm
東風荘であたりまえのようにやってる西入は古代ルール
>>200
東風荘がインターネット麻雀で最もポピュラーだからじゃない?
3/4の牌が透ける、鷲巣麻雀で(w
207デフォルトの名無しさん:03/02/08 13:56
ルールはここで、
いくら議論しても決まらないだろ!
とりあえず>>192 >>193
でダブロンは頭ハネで考えてみない?

で、最初に議論すべき項目は
「迷彩について」だと思う。
>>173
それは"待ち読み評価"じゃない?
オレは迷彩をする人は初心者と上級者には勝てないと
思うけど…。
アカギキタ-----(゜∀゜)-----!!
迷彩は必要だよ
たとえば、この配牌を見てくれ

四(7)2223445569西 北ツモ
明らかに染め手狙いでいける手だが、ここで、四や(7)から切ったのでは最後の上がりのときに
染め色バレバレでツモ上がりしかできなくなってしまうかもしれない
だけどこれを9や西をはじめに一個切ることで最後の上がりのときに、警戒度が全く違う
無論普通の手(普通の速度の手)を迷彩したりしない
あと、カベを使った上がり方とかも迷彩の一種かと
あと好牌先打も迷彩の一種になる
多少の気まぐれも必要かも。
似たような価値の牌がある場合に、いつも同じ順に切らないようにする感じなやつ。
西と北があったとして、西→北と切るようになってるとすると、
相手は北が出てきたら、西が使える状態にある又は西を持っていないと読むことが出来る。
213デフォルトの名無しさん:03/02/08 14:56
おまえらプログラムできないでしょ?
麻雀の話なら他でやれば?
214デフォルトの名無しさん:03/02/08 14:59
おまえら最強はイカサマルーチン組み込むことだろ。
深く考えるなボケ!!
>>213
おまえ麻雀できないでしょ?
ここじゃあ使えんからよそいってくれ。
216コウリュウ:03/02/08 15:01
な・・・なんということ・・・

囲碁スレ、将棋スレ、麻雀スレの三兄弟により
マ板糞スレ1800年の歴史は
今、最強の時代に!!

神は、なぜ、同じ時代に
三人の非凡なスレを送り出したのだ!

おのおのが名に恥じぬ糞スレとなったであろうに・・・・・・
麻雀の知識とプログラムの知識、両方が必要だと思うぞ。
どっちも無いなら使えないな。
>>216
この板やつらは初心者にえらそうに教えたり
他言語たたいたりしかできんから
おまえのような奴には荷が重すぎるってことだな。
219デフォルトの名無しさん:03/02/08 15:12
オマエモナー
ツモった直後の14牌のデータを与えられて、それが上がっているかどうかを
判定するだけのプログラムですら、考えただけで頭爆発します。

>>220
俺も。
こういうアルゴリズムかんがえるのは大変だな。
まあ俺がヘタレだからなんだが。
もちろんVBで作るんだよな
>>222
えっ!
HSPじゃなかったの!
頭を爆発させるプログラムの方が難しいよね
RPGツクールで作るんだろ?
>>220
考えるな。調べれ。
この板の過去スレにしっかり載っている。

http://piza.2ch.net/tech/kako/980/980791374.html
227デフォルトの名無しさん:03/02/08 15:34
漢ならアセンブラで久米
あがりになっていて、さらに得点の高いほうでファイナルアンサーね
>>209
なぜ初心者と上級者に勝てないと書かれたか分かる?
初心者……河を基本的に見ない -> 意味が無い
上級者……中途半端には回らない -> 意味が薄い

だいたい最初に9とか西とか少々切ったくらいではどっちみちこの場合ソーズが高くなって警戒度なんてまるで変わらないだろ。
第1打4とか5ならまだ警戒も薄れるが、ツモにかなり注文をつけることになる、フリテンの危険もある。
>>229
この9は最終形になった時要らない可能性が高い9ですよ
どっちにしろ要らなくなるなら、初めに切って迷彩したほうが効果的です
というのを含めた期待値を出す
ちなみに8引きは6でカバーできます
裏目になるのはすでに捨てた9を持ってきたときだけ(そんなに引く確率は高いかな?)

5巡で聴牌したときの捨て牌を見てください
普通に切って言った場合の最短
4(7)西北9
↑中から切れて不自然です

迷彩の
9(7)西4北
↑普通の手に見えるでしょう?これが2,3巡遅れても普通の手に見えるでしょう
231220:03/02/08 16:51
>>226

そのスレ面白かったYo。
特にレス 10 - 12 はワラタ。
その辺のソフトが相手だと、明らかに迷彩が有利
ホンイツチンイツ狙いで使う色や字牌から切るのは愚行で
殆ど無いと思考されているから

下の捨て牌だと、染め手は思考されにくいが
上の捨て牌だと、もちろん思考の内に入る

っていうか、あの配牌でも上がりやすさ(他の人からの上がりやすさ含む)の期待値から迷彩使わないのが正解かもしれんが、
それは最強プログラムの仕事だ
迷彩は余裕のある手のときだけで、
フリテンになる可能性が高い場合にそんなことはしないでしょう
ま、例が中途半端な余裕度(?)だったからスマソ
ttp://www.amy.hi-ho.ne.jp/ishihata/maujong/
こんなのに頼ってみるのも一興じゃなかろうか。

>9(7)西4北
>↑普通の手に見えるでしょう?これが2,3巡遅れても普通の手に見えるでしょう

本当にそう見てもらえるか?
(7)も西も4も北も手出しなのに?
手なりではまずないし、安牌を抱えて打ったとしたら西と4の順番がおかしいように思う俺は負け組みだろうか、いや負け組みだけど。
あ、そうか、最適混合戦術とかいうやつか。
 ” 上 の よ り は ” w
>>234
手が早ければ普通の手でも後ろから2番目に手出しで4が切れることは普通だと思わんか?
早いなと思わせるのは仕方が無いが、染め手かどうかをかく乱しようとしている部分に意味がある

そのサイト見れないの俺だけ?
(・∀・)マッシーロ!!
>>237
4手出しって事は西を切る時点で4を持っているということ。
もう何処で4面子1雀頭を作るかが確定していて、安牌抱え打つなら西より先に打4とするだろう。
もし4手出しがあるとするなら両面への変化、46と持っていてツモ7、44と持っていてツモ3か5か。
でもそんな手なら(7)も持っとくだろうし……
後は点棒状況から手役を狙う必要があって、安目を否定したとかか?
つか、今の段階でそういうのはどうでもいいんで・・・主題を掴んで欲しかった・・・
書き終わってから4書いてないから足したらあそこに挟まってたって感じワラ
240239:03/02/08 19:19
あんまり几帳面じゃないヘボなんで混乱招くといけないし控えることにします
241デフォルトの名無しさん:03/02/08 20:22
久々にこのスレみたら、
まだ麻雀初心者がいるみたいだね。
例(>>209)で迷彩をして一色手を普通の手に
みせるって書いてたけど、意味ないよ!
8ツモはカバーできるって書いてたけど、
カバーできてないし…。。

>>212
気まぐれは必要ない!!
西も北も場面によっては価値が違うからね♪
例えば、自分が東家だとしたら北を先に切るでしょ?
(それも状況によるけど…)
242桃花:03/02/08 20:30
ブロードバンド・コンテンツ配信サービス
PlayStation 2 ゲームダウンロード
http://sagatoku.fc2web.com/025game.gangu-01.htm
243165:03/02/08 20:39
ところで言語はVBで決まり?
244デフォルトの名無しさん:03/02/08 21:09
>ツモった直後の14牌のデータを与えられて、それが上がっているかどうかを
>判定するだけのプログラムですら
それはちょっとやばいかも・・・
>>244
きれいにかけないって意味じゃないの?
てきとうにやったら一応できるだろ。
246デフォルトの名無しさん:03/02/08 21:49
>>245
やってみてよ
>>220じゃないが、実際難しいよ。
点数計算だけど。

面子の取り方だけど、
雀頭の可能性のある対子を全検出したあと、
それぞれについて順子優先と刻子優先で
面子に切り分けていけば、完全網羅できるのか?
>>246
なんで俺だけ口先だけスレで組まなくちゃいけないんだよ。
しかも頭をきめてあとは総当たりしかうかばねーよ。
あたま爆発しそうだよ。
>>247
チンイツの待ちを判定するプログラムならたぶんバグのないものを書いた。

複雑な手牌(おもにイーペー含み)なら雀頭を切り出すよりも面子の可能性があるものを
先に切り出した方が速いはず。んで再帰呼び出しを使う。
自分より知識のある人なら綺麗で短いソースを書くのは簡単だろう。

問題はもっと別なところにある。
得点の高いアガリを読むといったって、序盤から読んだら実用にならないほど膨大な計算量になる。
かといって「初めは手なりですすむ」という作戦は「高いアガリ」とはほど遠いもの。
>>209の手で五をツモってきたときにも向聴数は落ちるから、単純ではプログラムは手が進んだと解釈する。
そういう作戦の判断というか打ち筋の部分をまず考えないと何もできないとおもうがどうよ?
250デフォルトの名無しさん:03/02/08 23:23
>>249
でも、序盤から読まないと"最強"にはならない。
配牌から理想形をイメージするアルゴリズムが必要だね。

例えば配牌でソーズと字牌で9牌以上あったら、
ホンイツを目指すとか。
もちろん場と点棒状況も考慮する。
251248:03/02/09 00:05
それはそれで手替わりを考慮できないプログラムになりそう。
イーペー狙いからチートイに変更なんて事も(人間には)あり得るし。

というか、本当に完全に人間の真似をするプログラムが強いのか?
人間のファジーさを組み込むのは並大抵のことでは無い気がする。
学習機能だけ書いて
あとは、俺たちで打ちまくって鍛えるからw
253デフォルトの名無しさん:03/02/09 00:56
>>251
配牌を得た状況で、
理想形をイメージする。
っで、1巡ごとにその理想形の検討が必要だね。
枯れてくる牌もでてくるから。
254デフォルトの名無しさん:03/02/09 01:04
配牌の残りが15?くらいになったら全て先読みすれば、理想的な打ち方ができる。
255デフォルトの名無しさん:03/02/09 01:11
>>254
配牌??
多牌です
257デフォルトの名無しさん:03/02/09 01:17
>>254
山のことかな?
でも15牌っていったら、
もう海底だけどね…。。
みんながみんなちゃんとした言葉をつかって打ってるわけじゃないからなぁ。
まあ山ぐらいわかると思うが。
そこらへんは意味がとうるように理解してあげよう。
259デフォルトの名無しさん:03/02/09 01:26
>>258
意味が通らないんだって…。
>>254はどーいう意味なの?
多分、残り4巡切ったらってことか。
でも完璧ったって3打しかできないよなあ。
261デフォルトの名無しさん:03/02/09 01:33
シャンテン数を落とすのと、
手を高くするのはどちらが有効かを
評価するアルゴリズムが難しいのでは?
262デフォルトの名無しさん:03/02/09 01:50
全ての場合について先読みすれば完璧な麻雀プログラムができあがる。
これ最強だね。
263デフォルトの名無しさん:03/02/09 02:03
>>262
先読みって何?
具体的にお願いします。
264デフォルトの名無しさん:03/02/09 02:30
>>263
牌の数は有限。
自分の配牌と捨牌、その他判明している牌を除いた牌が不明牌である。
その不明牌の配置の全ての場合を列挙し、最高の期待値となる分岐先へとゲームを進める。
場合の数は膨大になるが、ゲームが進むにつれ、減少していく。
そして残り3〜5巡くらいが現在のパソコンで計算可能な範囲であろう。
265デフォルトの名無しさん:03/02/09 02:34
強化学習を使ったバージョンは是非作ってみたいね。
「流れ」を考慮してステハイしないとな。
最強の麻雀プログラム。
それは、当たり牌臭いものを、サクサク捨てるが
決して本物の当たり牌は捨てないプログラムだ
また、ツモられそうになったり
自分の欲しい牌がある時は、鳴いて流れを変えてこそ最強
以上、これを実装する為に、まず、第6感を備える事が出来る
ハードとプログラムを作るが良い
>>264
すべての場合を列挙するのと不明瞭牌で作れる最高の役(または意味ある役)を
考えるのとどう違うのか? いちいち意味ないのも全部出して意味あるか?
ほんのわずかな意味ある手だけ考えろよ。
今までマトモな思考アルゴリズムを搭載した麻雀ゲームって
本当に存在したんでしょうか?
270デフォルトの名無しさん:03/02/09 03:04
先読み=確率計算なんだけどね
271デフォルトの名無しさん:03/02/09 03:20
272デフォルトの名無しさん:03/02/09 03:20
>>268
無意味か有意義かをどのようにして判断するのだ。
牌がどのように配置しているのか不明なのに正確に判断することなど不可能だろ。
273デフォルトの名無しさん:03/02/09 03:23
>>264
無駄な計算だね!

自分のほしい牌が山に残っているか否かで充分!!
274デフォルトの名無しさん:03/02/09 03:26
>>273
それではせいぜい人間レベルの実力しかムリ。
最強を目指すなら完全読み切りだろ。これなら人間はかなわない。
275デフォルトの名無しさん:03/02/09 03:27
>>271
これはひどいなぁ。
将棋には必勝法があるだってよ!!
ぜひおしえてほしいね。

ってすれ違いごめんなさい。
"おまいら最強の将棋プログラムしてみろよ"
に逝ってきます。
276デフォルトの名無しさん:03/02/09 03:32
ないと主張するなら
ない事を証明しないとね。

否定の意思表示ならサルでもできるよ。
277デフォルトの名無しさん:03/02/09 03:33
>>276
あるんだったらそれを証明しろ!!
>>275
よう分からんけど、>>271のリンク先の
将棋とオセロの話は、突き詰めて行けば
先手か後手かどちらかを取った方が必ず勝つ
と言う意味の必勝法だと思われ
279デフォルトの名無しさん:03/02/09 03:42
最大最小木が構成できるという事実から、
自明であると思うけど。

280デフォルトの名無しさん:03/02/09 03:43
将棋には、持将棋と千日手のルールが存在するから、引き分けの可能性も排除できないのではないのかい。
利積「我々は目指そう、パーフェクトな1000打を!!」

>その不明牌の配置の全ての場合を列挙し、最高の期待値となる分岐先へとゲームを進める。
言いたいことが分かるようで良く分からんのだが……
暗槓その他仕掛けが入らず、残り3順だとして、不明なのはツモ山に9枚、王牌に13枚、対局者39枚の計61枚。
これら全部を読みきろうとでも言うのか?
この場合、「最高の期待値」ってのは何なのか?

爆牌を超えるつもりか?
>>274
完全読みきりは最強の要素に入ってないよ。ただの無駄な処理。
283デフォルトの名無しさん:03/02/09 05:48
>>282
きみ頭悪いな。
>>283
ははは。まぁ意味があることでも証明してから言いなさい。
「たーくさん考えたからきっとすごいんだ。」以外にね(w
285247:03/02/09 05:58
全ての牌が透けて見えても、自分の負けがわかるだけって事もあるからな。
黄泉の深さは余り必要ないと思われ。

>>249
サンクス。
でも、結局雀頭から切り出すようにして書きますた。
一応動いてはいるが、どうやってテストしたらいいんだろう。。。
え、本当に作ってるの?!
麻雀強くてプログラムばりばりな奴いないの?
将棋のスレでもこんなこと書かれてたけど、
そんなやついたら、もう作られちまってるカモナ
288デフォルトの名無しさん:03/02/09 07:37
おれ一応将棋四段でプロのプログラマだけど、将棋のプログラムを本気でつくるなら不眠不休で3ヶ月は必要。
結論としてはそんな暇ない。
麻雀はそれよかずっと簡単だが、それでもまともなものつくるのなら一ヶ月は必要だろ。
289デフォルトの名無しさん:03/02/09 07:39
デジタルKEIです。重いけど見てくれ
http://homepage3.nifty.com/digikei/ten.html
>>289
板違いのマルチで宣伝を繰り返すこのウジ虫サイトを
ム板の技術を結集して潰しちゃってください
俺、東風荘で最高R1940のHSP厨です
>>288
おいおい口だけ君か?
ちなみに俺は天才プログラマー且つ天才ジャンシなわけだが
忙しくてつくれないな。
>>288
せめて「アマ」四段といえ。プロ棋士に失礼だ。

>>265
http://www.sun-inet.or.jp/~yaneurao/rsp/rspC9toCF.html
先達はこのように言ってるがね。
麻雀は偶然に支配されるゲームだから学習も一筋縄ではないのだろう。
偶然の量は、プレイヤーみな同じ
その偶然を一滴たりとも漏らさないようにようにするのが腕の見せ所
良い方の偶然をね
>>293
学習は簡単な場合分けならできそうだけどね。
・平和で上がれる確率が何%の時、平和に手をもっていく確率はどのくらいか
・タンヤオではどうか、
・役牌を一鳴きするか
後は、
・現在の得点状況
・後何局か
とかを組み合わせればどうよ。

大物手を狙いやすい奴。
せこせこ小さい手で上がる奴。
すぐ鳴く奴、
状況を理解しないで上がる奴。

とかぐらいは場合分けできそうだ。
あ、上のは人間の手牌も見れる、という前提ね。
捨牌だけだとかなーり大変そうだ。
相手の手牌みれたらそりゃ最強だろっていうツッコミはともかく、
打ち筋を確率で表現して学習させるのはいいかも。
結局人間の上達の基本的な道からはずれていないから、
PC流のアプローチとしては面白くないけどね。

ところで平和の判定と簡単にいうけれど、たぶんそれが実装できるのなら
他は大した手間じゃない。手の内に順子のみが入りそうで、最後は両面待ちになる
なんて事を予測するのは相当うまい予想アルゴリズムが必要。
(両面待ちの判定を捨てるなら少しは容易に構築可能かも知れないけど)

#本当に組むなら言語と共通仕様を先に決めた方がいいかモナー。
上がれる確率は聴牌の形を想定して、そこから逆算していけばどうかな?

例えば
22 68
という形の時は上がれる形は
22 678
だけ。7の残り枚数に依存する確率だよね。

12 68
の場合は、聴牌に必要な牌は
1、2、3、6、7、8
のどれか。
個々の牌を積もれる確率はわかる。
で、それを積もって、さらに上がれる確率も計算できる。
2手先を読むような感じで計算できないかな。
300デフォルトの名無しさん:03/02/09 21:09
>#本当に組むなら言語と共通仕様を先に決めた方がいいかモナー。
3月ごろまでに作るように努力します。
言語はJAVAがいいと思うんですが、C#にしようかな・・・

とりあえず、俺は麻雀初心者なので
今度本を読んで勉強しようと思っていますが、
麻雀プロ級の方に質問。

どんな関数があれば、いいと思いますか?
思いつくだけ列挙してくれるとうれしいのですが。
例えば
自分の牌と、捨て牌だけから
次に引いてくる牌の確立を計算する関数
とか。
301165:03/02/09 22:26
麻雀はフリー雀荘で8割方プラスで帰れる又は東風荘で1700〜1800って感じ。
プログラムはC,PHP,ASP,VB,HTML(プログラムか?)を趣味程度にやってます。

関数について提案です。

あがりとは基本的には4面子・1雀頭ができた状態のこと
そのあがりの形に持っていくために、如何にして
好条件のルートを選択するかというのが基本になります。

四(7)2223445569西

たとえば上記のようなケースでは次の牌をツモると4面子1雀頭に近づきます。
【期待牌】 三四五 (6)(7)(8) 123456789 西

しかしここで安易に全てが必要牌というわけではありません。
期待値というものを考慮しないといけないので、大雑把に書くと
次の(A)(B)の最終形が対戦している四人の中で一番最初にあがれる確率を
20% 50%としましょう。(麻雀は最初にあがれることが重要なゲームです)
302165:03/02/09 22:27

22234455678999   清一色    6翻12000点 * 20% = 2400点
四五六(7)(8)(9)22334455 平和・一盃口 2翻 2000点 * 50% = 1000点

となり、期待値では清一色を狙うべきだと出ます。
なお、上記の20% 50%の計算は
【期待牌】三四五 (6)(7)(8) 123456789 西
をツモる確率、鳴ける確率等を元にして算出します。


但し、全て期待値に従っていれば良いのではなく目指す最終形によって
必要な牌は違ってきます。
例えばなにをあがっても良い序盤の局面では、期待値に従っている限り
全てが必要牌になりますが、12000点を取らないとトップにならない
局面と、1000点でもあがればトップになれる場合では自ずと
選ぶ必要牌は違ってきます。

ここまででソースのヒントはできたと思いますが、ご質問はありますでしょうか?

なお私は個人的には、これにさらに捨て牌の読みを入れるべきだと思います。
303165:03/02/09 22:57
1.牌パイから期待牌を取得

2.期待牌の組み合わせで完成できる役をシミュレーション = 完成形

3.シミュレーションした結果で状況的に選択可能な最終形を計算する。 = 最終形
  不要な期待牌を削除して、期待牌を必要牌に変換する。

4.最終形から必要牌をツモった場合に捨てる牌をシミュレーション = 捨て牌

5.捨てる牌が相手のあたり牌である確率を計算。
  相手があがった場合の点数をシミュレーション。
  捨て牌があたり牌である確率 × あがった場合の点数 = 危険度

6.残りのツモ回数+鳴き回数のうちで必要牌を全てツモる確率を計算 = あがり率

7.自分の期待値 − 危険度 = 決定値
304165:03/02/09 22:59
ざっくりですがこんな感じで如何ですか?
>>300
関数は誰もが使うライブラリのようなものをつくるのかな?
必要牌の推定や読みの部分は165氏のような上級者にお任せして、
もっと基本的な部分を提案するとすれば、
「手牌と捨て牌から残りの有効牌の数を調べる」
「残りの有効牌の数からタンヤオその他に使える牌数を調べる」
「対戦相手の捨て牌からヤオ九牌や各色の切られた数を調べる」
とか、考えればいくらでも作れると思います。
もし機能に不満があれば各個人が(JAVAでいう)オーバーライドすればいいので。
また、山や王牌がプレイヤーから直接覗けないようにしなければならないので、
ツモ牌やドラを与える関数も必要でしょうか。
・相手が読むことを想定した打順(迷彩)
・相手一人一人の好みを読んで狙いの推定を行う(危険度の補正)
・場の条件によって修正する戦略(オーラスであえて振り込むとか見逃すとか、
海底やツモが付くことで倍満やらになるときにはダマでいくとか)

おもしろそうだけどきりがないのー
307300:03/02/10 00:14
どうもです。
非常に参考になります。
理解度は70%程度と、もう2,3回は読まないとだめっぽいのですが。
とりあえず、ディスクに永久保存しておきます。
麻雀の本を読まないとな・・・

>関数は誰もが使うライブラリのようなものをつくるのかな?
二つの意図があって、
一つは誰もが使うライブラリを提供する目的ですが
(みんなで同じ物作っても仕方ないので)
もう一つは、麻雀CPUを作るにあたって、
どんな関数が必要で、それぞれがどの程度実現できるのかを
知っておく事は非常に有益だと思ったので。

>また、山や王牌がプレイヤーから直接覗けないようにしなければならないので、
>ツモ牌やドラを与える関数も必要でしょうか。
それは毎回コピーして、各プレイヤーに渡すのがいいですね。

3月に入ったらホームページを立ち上げますね。
牌の流れを感じないとだめぽ。
裏ドラで数えヤクマン作れないとだめぽ。
ナインを全て引き分けに出来ないとだめぽ。
309220:03/02/10 00:35
プログラミングは出来るけど麻雀の事があまりわからん。

そういうプログラム作る場合に決めなきゃいけないと思うことを
思いつくままに列挙。

>>159 を引用

> @麻雀牌の種類は 万子・筒子・索子の三種 9 * 4個づつ
>          風牌・三元牌 7 * 4個づつ
>          合計3*9*4+7*4=136個の牌

五満 とか 五筒 とか 5索 には赤いやつとそうでないやつがあったと思うのだけど、
これは区別しなくていいのかどうか。

春夏秋冬は要らないかどうか。

ネットワーク上で牌情報をやり取りする際に牌を識別する方法には、
すでに標準のようなものがあるかどうか。(例えば万子の 3 ならM3 とか。)

310デフォルトの名無しさん:03/02/10 00:46
>>309
> ネットワーク上で牌情報をやり取りする際に牌を識別する方法には、
> すでに標準のようなものがあるかどうか。(例えば万子の 3 ならM3 とか。)

そういうものは単純に変換可能だから大した問題ではないな。

内部的には2バイト表現しておけば、ドラや赤の表現も問題ないだろう。
311デフォルトの名無しさん:03/02/10 00:51
300には、まず「場」と「ルール」のプログラミングをしてもらいたいな。
評価関数については、うん、多少興味がある。いくつか試みたいことが。
ルールをどれだけ調整可能にするのかな。
汎用にするならかなり幅を持たせる必要がでてくるわけだが。
麻雀って地方ルールだらけでむちゃくちゃだしな(笑)
アルゴリズム競技用ってことで、スパッとひとつに固定しても良さげだけど。
313デフォルトの名無しさん:03/02/10 01:10
固定でいいんじゃない。
アルゴリズム競技のインターフェイスが確定すればそこから調整可能だろう。
東風ルールでいいと思う。
314247:03/02/10 01:11
あら、作ってる人もういるのか。
c++でつくろうかと思ったんだが。
いま、役判定書いてますが、激しくややこしい。
ま、一通り出来たらほうこくしま。

315300:03/02/10 01:27
>300には、まず「場」と「ルール」のプログラミングをしてもらいたいな。
今はちょっと忙しくて、何もできないので
3月の頭くらいまで待ってください。
abstract class Player{
public ReturnObject methodName(Information information)
}
を提供できるまでに、もっていきたいと思っているので。
メソッド名は何がいいんですかね・・・
turnかな?

ネックとなるのがルールなんですよね。
まあ、できるだけ汎用的に作ろうとは思っていますが
どんなルールがあるのかを知らないといけないんですよね。

そういうわけでオススメの本なんかを紹介していただけると。

ネットワークはまだ考えてないんですが、
東風で使ってくれる事を目指して作ろうかなw
316デフォルトの名無しさん:03/02/10 01:40
>>315
「場」については現況をチェックできるようにしたほうがいいと思う
(現在の順番、各人の捨牌、手出し、ツモ切りなど・・ネット対応を考えるなら)

> そういうわけでオススメの本なんかを紹介していただけると。
できたら、いちどフリー雀荘にいくのをお勧めする。マジで
雑誌などに広告を出してるレートの安い店(0.5とか3とか)なら
懇切丁寧に教えてくれるし、大体一般的な標準ルール。
本を読むより、プログラムの感覚もつきやすいはず。


317デフォルトの名無しさん:03/02/10 01:43
まあ、井出洋介の本なんかが(プログラムを組むなら)向いてるかも知れん。
ググってみ。
漏れの希望。
まず、サーバを構築(または東風荘のを流用?)し、クライアントのクラスを配布。
で、そのクラスを派生させて個人個人が組めるようにしてくれるとありがたい。

ごめん、日本語分かりにくいかも……
って前に同じ発言が…… 逝ったきます。

あと、できれば他の言語でも開発できるようにインタフェースを公開して欲しいっす。
320300:03/02/10 11:21
247さんも作ってるようですが、
まあ、先に完成してしまったら作るのやめようかな・・・
なんせ、忙しくて・・・3月後半は日本一暇な可能性があるわけですが。
21〜23日に時間ができたので
その時にチョコチョコやってみます。

あ、みなさんチョコもらえそうですか?

>あと、できれば他の言語でも開発できるようにインタフェースを公開して欲しいっす。
公開も何も流行のGPLとかBSDライセンスで・・・
そうじゃないと、CPUの実験もできないと思うので。
ただ思うのは、テスト環境を作るのにJAVAでサーバーとして
立ち上げなくちゃならないので、別途ライブラリーを持ってる人とか
言語にこだわりのある人以外は、他言語で開発する意味が
ないような。

あと、サーバーでもつかえるような設計をする予定であって
最初からソケットで書くのはどうかと思ってます。
SC化するには、ソケットで飛んでくるデータを変換するPlayerクラスを
用意すればそれでいいと思うんで。

>できたら、いちどフリー雀荘にいくのをお勧めする。マジで
それは無理ですw

>「場」については現況をチェックできるようにしたほうがいいと思う
毎回鳴けるかどうかの判定をして
鳴ける時に限って、情報のコピーを渡して
鳴くかどうかを決めさせるのがいいですね。
321220:03/02/10 13:34
●ネットワーク上で牌を伝達する際の識別方法案。
牌を英数字2文字で表す。

萬子: M1 M2 M3 M4 M5 M6 M7 M8 M9
筒子: P1 P2 P3 P4 P5 P6 P7 P8 P9
索子: S1 S2 S3 S4 S5 S6 S7 S8 S9
東南西北: TO NA SH PE
白發中: HK HT CH

考慮していないこと:
赤牌、花牌
322220:03/02/10 13:38
●麻雀をする者を表すクラス Player のイメージ(Java)

/** ツモ切りする Player */
public class TsumogiriPlayer extends Player {
  public void turn(Context context) {
  }
}

/**
 * 東を引いてこない限りツモ切り。
 * 東を引いてきたら、面前の一番左にある牌を捨てる Player
 */
public class ILoveTon extends Player {
  public void turn(Context context) {
    Pai tsumo = context.getTsumo();
    if (tsumo.equals("TO")) {
      Pai[] menzen = context.getMenzen();
      context.setDrop(menzen[0]);
    }
  }
}

turn(Context) が自分の順番になるたびに呼ばれる、と想定して書いたのですが、
このままだとほかの人が鳴いたことを知ることができないなぁ・・・。
まあ、案ということで・・。

上の例では turn(Context) が呼ばれたときに渡される Context オブジェクトには、
あらかじめ切る(Dropする)牌として、自模ったものが設定されているつもり。
おっ、オレのおかげで麻雀ソフトの開発が進んでいるみたいだな。
よしよし精進しろよ。結果は有効に利用してあげよう。
1局を開始するごとにPai(牌)オブジェクトを136個生成し、
ランダムな順序で山オブジェクト(キュー状)に並べる。

ここでPaiオブジェクトは以下のような属性を持つ
-毎回staticに初期化する内容
・種別(萬子, 索子, 筒子, 風, 三元)
・サブコード(1〜9)
・赤フラグ
-判定用にセットする内容(なくてもいいが)
・特性情報フラグ集(ヤオ九, 中張, 字/数, 風, 三元, 緑など)
-場の状況に応じてセットする内容(なくてもいいが、便宜上)
・既知ドラフラグ
・所在(山、PlayerA〜D、河)
325324:03/02/10 14:57
つづき

それから、「場」には以下の内容が要る
・席配置
・何場の何局か(席+局の情報で親が決定する)
・場のモード(配牌, ゲーム中, あがり/ちょんぼ画面)
・手番
・山
・積み棒の数(=連荘数)
・リーチ棒の数
・各プレーヤーオブジェクトへのリンク
プレーヤーは、所持得点、特殊状態(リーチ、オープンリーチ?)と、
手牌、それに河、サラシ牌情報への参照を持つ
あと名前とかのコメント情報か。

思考ルーチンは、自分の手牌と場を与えられ、そこから情報を随時引き出せる。
ただし場のモードが配牌・ゲーム中ならば場を通じた手牌取得は阻止される。

通信上では、4枚のどれか、という情報も識別できるようにすると処理にいろいろ便利。
赤ドラのように、一部だけが該当するという情報もあるし、追跡がしやすい。
ということでPaiオブジェクトリストのインデックスを通信に流すのが楽では。
パケットを人間に見易くするのであれば、
>>321案に、さらに1文字追加してabcdかなんかを付けると。
326247:03/02/10 15:23
>>320
どうも。ぼちぼち作ってます。
結構いい感じなので、出来るのは多分こっちが先かも。
でも、こっちはネットワークは全然考えてないし、別物と考えてもいいのかな。
ロボット同士が物凄い勢いで10000荘くらい戦う感じで考えていたので。。。

なんか共有できるルーチンとか、協力できたらいいですね。
役判定とか。。。

>>321-322 と>>325
>牌を英数字2文字で表す。
今のところ、単純に1〜34に順に割り振ってます。
これでも大体理解出来るんで、可読性を上げるメリットは余り無いかなと思ってます。

#赤牌情報入れる場所が無くて往生してたりします。

全体は、大体>>322みたいに、Playerクラスを継承してもらって
ターンごとに呼ばれる関数に思考ルーチンを書いていただくって寸法で考えてますが、
他家の捨て牌のときどうしたものかと。

・捨て牌があるたびに呼ばれる関数をひとつ
(鳴けるかどうかも各自で実装? 間違えたらチョンボになるとか)

・ポンするか関数、チーするか関数等を別個実装
(関数の数が無駄に多い予感)

どうっすかね。
>>326
捨てられる度にゲーム進行を司るオブジェクト? が、各プレーヤーの手牌と比較して
鳴ける人だけに問い合わせるってのは駄目?
ここをチョンボありにしても思考ルーチン勝負にはあんまり意味があるとは思えない、というか
邪魔だと思う。

鳴き(ロン)問い合わせのタイミングは他に槓の時なんてのもあるよね。
328220:03/02/10 16:53
>>327
> 鳴ける人だけに問い合わせるってのは駄目?

なるほど。
麻雀のルールでは、たしか複数の人が鳴こうと(ポン・カン)したときに、
優先順位ってありましたよね。その順番で聞いていく、と。

いっそのこと、鳴けない場合でも何かイベントがあるたびに呼ばれるように
してしまってもいいかもしれない。

例えば、誰かが牌を捨てただけのときにも呼ばれるようにしておけば、
GUI な interface を使っている場合には画面描画だけして、return すればよいし、
ほかの人の捨て牌の傾向を記録するようなインテリジェントな思考ルーチンを
作る人には、捨て牌を記録するチャンスが与えられるし。
329247:03/02/10 17:07
>>327
鳴けるかどうか、というよりも
牌が一枚切れる(見える)ごとに、何らかの判定をしたい人もいるんじゃないかと思って。

例えば極端な例だけど、
最初の自模順が回ってくる前に、対面が白と発を、下家が東南と鳴いて、
それでも上家がリーチをかけて来た、なんていう状況のとき
自模が回ってきた段階で時系列を遡るよりは、楽じゃないかなと思うのだが。

チョンボ(誤ポン誤チー)は、どっちかというと悪用されるのが怖いというか。

鳴くかどうかを尋ねる関数と、
それと別に情報更新用の関数を用意すればいいのかな?
>>329
ひとつにするか別にするかはまあどっちでもいいんでない?
チョンボだけは不可能にしといたほうがいいぐらいで。

あと、捨て牌情報にはリーチフラグと、手出しかツモ切りか、という
情報もいるね。
あと、ツバメ返しやエレベーター、元禄積みとかもマスターしてあると強いな
>>301
嘘つきwレートにもよるけど8割プラスで帰れたらプロ並みだぞww
ゲーム代無料ですか?俺、東風荘では超上卓だけどそんな奴信じられん
と、つっこんでみた(・∀・)ニヤニヤ
>>332
俺も頂上宅だが、8割プラスの定義がわからないが
点3レベルの連中にだったら確実に勝てる。少なくとも絶対にラスは引かない。

ゲーム代込みでも8割プラス出来そうな気がするが、ちょっと厳しいかもな。
レートが上がるとさすがに8割は無理だけど。
とりあえずお前らは麻雀・他板行くか仕様考えるかして下さい。

仕様の中にフリテンチェック関数があると楽かも。
他家用と自家用と。
フリテンリーチって絶対見破れないと思う。
>>335
ながれたらチョンボ。
>>336
そんなルールあるんだ・・・
338デフォルトの名無しさん:03/02/11 00:02
麻雀のゲームって
コンピューターが弱いんじゃないかとか、
いかさましてるんじゃないかとか
考えてしまう。
だから、純粋に楽しめない。

そういう意味では、2chの有志が作る
麻雀ゲームは楽しみ。
>>338
それあるね。どんなにかっちりつくっても、疑似乱数の偏りに勝手に意味を見いだして
文句つけてくるユーザーが絶えない(´д`;)
>>328
>麻雀のルールでは、たしか複数の人が鳴こうと(ポン・カン)したときに、
>優先順位ってありましたよね。その順番で聞いていく、と。
チーされたらポン(カン)する(違法?)と言うオプションも欲しいので
優先度の低い順に聞くのが良いと思う…
341デフォルトの名無しさん:03/02/11 00:21
>>340
そんなきわどい技を使うの?
>>337
ルールというか、リーチかけたらてがえは出来ないんだから
流局時にてんぱってなかったらフリテンリーチ。
(リーチかけたら手を開けないとチョンボだから)
>>340
それでも優先順の高いほう(上家)からじゃないとだめくないか?
>>342
それ・・・ノーテンリーチ?
じゃなくて・・・俺が思ってたのは、1-4-7待ちで1は切ってるけど、
ツモ期待でリーチみたいなの。
>>343
優先度はポン(カン)がチーより高いので、上家・下家は関係ない
まぁ、捨てた香具師の下家から順に聞いてけば問題ないと言う話もあるが…
ひとつの捨て牌に対して可能な行為

・チー
・ポン(カン)
・ロン

チーは下家のみなのでチーが複数発生することはない
ポン(カン)は、牌の枚数からいって、ひとつ以下しか発生しえない
ロンだけは複数ありえる

チーが優先度がもっとも低く、ロンが最優先だが、
ロン同士は、ダブロンなしなら打者の下家が最優先になる、とかかな。

後出しの戦略を許すのなら、一打ごとに一定時間!の宣言タイムを設けるとかか?
まあ、本当の時間にしなくても、3回聞く、とかでもいいか。
他家の行動は知ることができるってことで。
347345:03/02/11 00:37
スマソ、キモのロンを失念してたよ
348345:03/02/11 00:47
下家がチーしたら、他家がカンして
下家がロン(カンチャン)するのはOKだけど
下家がチー(上がれるが役が上がるのを期待して)したら、他家がポンして
下家がロン(ポンされると役が上がらない)するのはOK?
349345:03/02/11 00:52
>>348
ミスった…
カンチャンじゃなくて、槍槓(チャンカン)ね…
首吊ってきます
>>349
チャンカンロンするためには、カンが確定しないと駄目ってことで
別問題にしたほうがいいかも
351350:03/02/11 00:56
あ、ここでいう「カンの確定」は、完了ではなく
他家の宣言との調整の結果、カンが選ばれるってことね
352345:03/02/11 00:56
>下家がチーしたら、他家がカンして
>下家がロン(カンチャン)するのはOKだけど
自己レスだけど、ロンすると、それが優先されるから駄目なのかな…
麻雀博士、降臨キボンヌ
>>345

>下家がチー(上がれるが役が上がるのを期待して)したら、他家がポンして
>下家がロン(ポンされると役が上がらない)するのはOK?

これは無しじゃないでしょうか。
下家は一度チーと発声しているわけですよね。
そのとき同時に他家がポンした場合にポンが優先されると思うのですが、
そのポンの発声を聞いた後に「じゃあロン」と2度目の発声するのはルール違反に思えます。
全ての宣言は同時に行われ、チー<ポン=カン<ロンの順に強くなります。
ですので、後出しは重大なマナー違反で、他人のチーを聞いてポン等という
戦略を人間相手にしたらまず二度と打ってもらえないでしょう。
やはり宣言を一度だけ聞くのが現実的かと。

槍槓は他家の加槓に反応するものであり、今の議論とは全く関係ありません。
どんな順序でも関係ないので
一回づつだけ聞いて、staticに決まる優先度によってひとつ確定か。
とりあえず、日本プロ麻雀協会の競技規定です。
この規定がこのスレのルールにすべて適用できるとも思えませんし、
その必要もないですが、多少の参考にはなるのではないでしょうか。

http://www001.upp.so-net.ne.jp/npm/kyougikitei.htm
>>355
喰い関係の話しで気をつけなければいけない事を一つ。
東家が捨てた牌に対して、南家がロン、チー、出来る状況にあり、
且つ西家がポンできる状況にある場合、宣言を1度だけ聞くという条件では

switch( 南家にロン、チー、通し、の何れを行うかを聞く ) {
case ロン: 南家上がり; break;
case チー:
    switch(西家にポン、通し、の何れを行うかを聞く) {
    switch    switchcase ポン: 西家ポン; break;
    switch    switchcase 通し: 南家チー; break;
    switch    switch}
    switchbreak;
case 通し:
    switchswitch(西家にポン、通し、の何れを行うかを聞く) {
    switch    switchcase ポン: 西家ポン; break;
    switch    switchcase 通し: break;
    switch    switch}
    switchbreak;
}

のような手順にならなくてはならない。ちょっと面倒。
358357:03/02/11 07:57
げ、インデントが狂った! 再掲。

switch( 南家にロン、チー、通し、の何れを行うかを聞く ) {
    case ロン: 南家上がり; break;
    case チー:
    switch(西家にポン、通し、の何れを行うかを聞く) {
        case ポン: 西家ポン; break;
        case 通し: 南家チー; break;
    }
    break;
    case 通し:
    switch(西家にポン、通し、の何れを行うかを聞く) {
        case ポン: 西家ポン; break;
        case 通し: break;
    }
    break;
}
宣言を各人専用のバッファに溜めておいて、全員出揃った後で比較すればいいのでは?
357方式だと、
「東家の切った牌に対し、南家がチー西家がポン北家がロンできる」状態を
判別するために多段のswitchが必要でややこしいでしょう。

#ダブロン有りなら無関係な話ですが。
360165:03/02/11 10:17
順調に進んでいるようですね。
実際に作っている人も何人かいらっしゃるようで心強いです。
私はjavaの知識が無いのでプログラムに貢献できないのが
残念です。

最強プログラムができたら、私のセオリーと本当の最強の違いを
比較してみたいものです。
同時鳴きは発声優先、吃された後に栄って言っても無駄
自摸り三暗刻の立直のみに安全に差し込めるようなレベルまで行くのかねえ
363デフォルトの名無しさん:03/02/11 12:23
>実際に作っている人も何人かいらっしゃるようで心強いです。
二人だよね

C++ vs Java
>>361
スレッドで同時処理w
365デフォルトの名無しさん:03/02/11 12:59
OO vs 非OO
366デフォルトの名無しさん:03/02/11 13:44
サバクラにしても、サバはどこで動かすんだ
と言ってみるテスト
367デフォルトの名無しさん:03/02/11 13:51
ダブロン無しなんですか?
二家和や三家和が有りの場合、立直棒は上家取りが基本
369デフォルトの名無しさん:03/02/11 17:02
思考ルーチン対決なら、ダブロンはあってもなくてもあまり戦略に変化はない気がする。

仕様としてかなりきちんと定義されてるという意味では、どっかの競技麻雀のルールを
発声とかの部分だけ修正して使うのが統一しやすいんじゃない?
ダブロンはアタマハネ。
戦略的には変わる
親リーかかってるばあいでもオナテンなら親には振り込みようが無いのでリーチかけられたりする
ダブロン無いなら上家と同じ待ちでリーチかけないで別の待ちにするとか
372デフォルトの名無しさん:03/02/11 22:46
うん
373357:03/02/12 00:11
>>359
ちゃんとアルゴリズムを考慮すればそれほど難しくはない。
もしこのような手順を取らず、全員出揃った後で比較するという
手段を取ると、(殊に対人の対戦の場合に)不都合が出てくる。

例えば、東家が捨てた牌が南家の上がり牌であったとして、
それに南家がロンをしたとしても、たまたまその牌が西家がポンできる牌で、
ポンするかどうかを西家が長考したとき、南家にとっては(明らかに上がれる
状態にあるのに、西家の解答を待たなければならないので)ストレスがかかる
と思われ。
374デフォルトの名無しさん:03/02/12 00:14
>>373
ネット麻雀ではだいたい時間制限によって対処してるかな?
Javaはわからんのだが……

牌切った情報を全部のクライアントに送信。
→自分の所で鳴けなければそのままクライアントからサーバに「何もしない」を返事。
→鳴ければ、ロン・カン・ポン・チーどれができるかサーバに返事。
(この時点でロンできるユーザをサーバが把握)
→ユーザから行動を選択。

ということじゃだめ?例えばダブロン状態なら待たされるだろうけど、
ロンであがれるのにポンが終わるのを待たされるというのは無いと思う。
ネット麻雀じゃ、どこでもロン押しても、ポン待ちですよ
で、ポンできるひとが、キャンセルまたはポンを押してからポンが無効化されロンできる
>>375

ロンできるかどうか、鳴くことが出来るかどうかは、「場」側(ネットワークならサーバ側)
でチェックするのが良いと思う。また「場」は、各プレイヤーが持っている牌を全て把握
していて、そのプレイヤーが持っていない牌を切ってきたときにはエラーメッセージなど
で応答するのが良いと思う。

誰かが牌を切ったら場は
  1、その牌をそのプレイヤーが切ることが出来るのかどうかをチェック
    ありえない牌を切った:
      ならその旨プレイヤーに通知、再度どれを切るか受け付け
    切ることが可能な牌:
      打牌した(牌を切った)本人にそれを正常に受け付けた旨通知
  2、その牌が切られたことを全プレイヤーに通知
  3、打牌した者の次のプレイヤーに鳴くかロンかを聞く→記録
  4、その次のプレイヤーに鳴くかロンかを聞く→記録
  5、その次のプレイヤーに鳴くかロンかを聞く→記録
  6、記録してある「鳴くかロンか」を優先順位に基づき判断
  ・・・

鳴くかロンかを聞いた直後には、当然それが可能かどうかのチェックも入る。
可能でないならばエラーを返して再度受け付け。

牌を切ったことを通知することと、鳴くかロンかを聞くのは分けたほうが、いいと思う。
そうしないと、誰かが鳴くかどうか決めかねて時間経過している場合に、
他のものが、すでに打牌した者に対し、「早く切れよ」ってことになる。
>>376
ソネットのジャンプラグドは待たずにロンになるよ
ふと思ったけど、このスレの主旨って
最強のネットワーク対応型麻雀ゲーム(クライアント+サーバ)なの?
いや、別にそれでも構わないんだけど
でも最強を目指すのなら、クライアントとプラグインに完全に分離して
クライアントは既存の様々なネット麻雀に接続(人間と対戦)出来るように作り
プラグイン部で思考を担当するように作るのも面白いのではないかと
まぁ、実際に繋ぐ前には、迷惑を掛けない様に念入りなチェックが必要ですが…
380デフォルトの名無しさん:03/02/12 06:55
>>377
牌の管理を「場」でやるのは賛成。
ただし、それならば

>   1、その牌をそのプレイヤーが切ることが出来るのかどうかをチェック
>     ありえない牌を切った:
>       ならその旨プレイヤーに通知、再度どれを切るか受け付け
>     切ることが可能な牌:
>       打牌した(牌を切った)本人にそれを正常に受け付けた旨通知

この部分は、「場」と「プレイヤー」が共有する牌No(デッキNo)で処理すれば
ありえない牌を切ることはなくなる。(いわゆるジャンピュータ方式)
鳴いてる場合は最大値オーバーがありうるけどね。

381デフォルトの名無しさん:03/02/12 07:03
とりあえず、ネトゲーで試せるように。
ただ、他の3人の捨てた牌も自分で入力しなければいけないっぽいけど。
ゲームをひとつに絞るならほかにやりようもあるかもだが。
382デフォルトの名無しさん:03/02/12 07:40
>>381
> ただ、他の3人の捨てた牌も自分で入力しなければいけないっぽいけど。
ん?意味がわからん。前提として「場」が牌の管理をするわけだから
「プレーヤー」は「場」の情報が変化した時(牌が切られた、誰かが鳴いたなど)
にメッセージを受けるというふうに考えていたのだが。

「プレーヤー」は自分内に「場」の(公開部分の)データコピーを持っていて
それを更新しながら「場」からのメッセージで自分が着手可能な場合に
次手を決定していけばいい。
>>382
東風荘に参加させたいんだって。
384デフォルトの名無しさん:03/02/12 09:47
>>383
ああ、なるほど。そっちからの制作か。
いいかもね。
385デフォルトの名無しさん:03/02/12 11:19
東風荘はコンピューターの参加を歓迎しないと思うよ。
東風荘もどきを作った方がいいと思う。
もし最強のプログラムになったとして
コンピュータに打たせて自分の成績(R)上げるなんて最低だな
>>386
いや、良い成績の残せる打ち手(プログラム)が作れたら
それはすばらしいことだと思うよ
麻雀で純粋に自分の頭で遊んでるやつに悪いと思わないの?
あなた自分のことしか考えていませんね
なんでファミコンじゃなくてネットで麻雀するか分かってますか?
それは人間と打ちたいからだと思いますよ
それ自体が素晴らしいことでも、他人に迷惑がかかる恐れのあることをしてもいいんですか?
気づかれなきゃいい、という問題ではありません
人間と打たせたいなら最強AIと打てるをウリにしたようなネット雀荘を別に作るべき
>>388
悪いとは思わないなぁ。
格好のチューリングテストだぜ?

というか、おれの対戦相手がロボだったら
おれならむしろうれしいけどな
>格好のチューリングテストだぜ?
つもってから打つ時間とかも考えないとな
そうやって、また雑魚が這い上がってくるわけか・・・。
絶対に自分で打つんじゃないぞ。
せっかく超上級卓で打ってるのに雑魚が混じると萎えるからなw
393デフォルトの名無しさん:03/02/12 13:28
そういうのは強いプログラムができてから言いなさい。
とらぬ狸(略
で、ルールは確定したの?
もう誰か作り始めてるなら、報告きぼんぬ。
>>394
東風荘で(こっそり)打たせるんだから
ルールは東風荘ので。
東風荘の古代ルールじゃ「麻雀」最強とはいえないな。

ところで、最低でも「ラグ読み」出来ないと東風荘では勝てないぞ(低レベルでは勝てるけど)
397デフォルトの名無しさん:03/02/12 21:17
今日ちょい暇だったので管理クラスとプレイヤークラスつくって牌配ってみた。
役判定を考え出したら頭がウニになってきたのでやめた・・・。
思考ルーチンまではまだまだ遠いなあ。
ねえ、りぬにあるサーバ・クライアント型麻雀ソフトベースじゃだめ?
netjamだったかなぁ?
399デフォルトの名無しさん:03/02/12 22:23
>>398
ポインタを示してくれないと
400デフォルトの名無しさん:03/02/12 22:32
400
ttp://www.sfc.wide.ad.jp/~kusune/netmaj/

これ。netjamじゃなくてnetmajか・・・・・・
確か古いCで・・・hfdじょあhfgらhふぇだんfけらんf
jふぃd;亜sjふぃ小田sjfぢおps@あjkふぉdp「さkふぉえrqk
>>396
>ところで、最低でも「ラグ読み」出来ないと東風荘では勝てないぞ(低レベルでは勝てるけど)

「ラグ読み」は必要ないでしょ!!
ラグは読みの参考になる程度であって、
"最強"を目指すならラグなしでもある程度、
読めなきゃいけないからね。。
東風荘ではラグ読みは大事な情報
レベルが高くなれば高くなるほど、細かい情報が勝負を分ける
ドラそば切ってラグったら、下家がドラ持ってる可能性が高いとかな
東風荘に限らず、ネット麻雀はリアルではあり得ないところ(ラグ)からも情報を得なければならない
"最強"とは東風荘での話しなの??
406デフォルトの名無しさん:03/02/13 00:21
>>401
unixでしかもC言語ときたら
悲惨だ。
407デフォルトの名無しさん:03/02/13 00:33
ぃぬxでしかもcげんごときたら
ひさんだ
東風厨逝ってよし。
だいだい、対戦相手&ルールの揃ったところの例としてネット雀荘が引き合いに出されただけなのに
なぜ東風荘での小技を偉そうに語っているのか理解不能。
ネット麻雀の欠点を利用した技を自慢したいなら麻雀板でやれ。
んで叩かれてろ。
409デフォルトの名無しさん:03/02/13 01:06
ラグが重要な情報になるのであれば
ラグフェイントができる事にもなるわけで
そういうのは考えても考えなくても同じかもしれない。
ラグ読みはなしの方向で!!
モノができてから各サーバ向けに調整すりゃいい
http://www.amy.hi-ho.ne.jp/ishihata/maujong/
のプラグインを作るというのはどうか?
ラグの意味がわからん。いや、それだけ。
ラグ→遅れ→鳴く時に微妙に間がある
俺もまずは、まうじゃんのプラグインでいいと思う
自作プラグイン同士で戦わせたりできるし
417デフォルトの名無しさん:03/02/13 02:35
プラグイン頂上決戦でつか?
ラグ:
誰も鳴けないときは問い合わせがないためすぐに次のツモになるが
誰かが鳴けるときは鳴くかどうか問い合わせるため、
即座に鳴かないと答えたところで遅延でばれてしまう

システムとしてこれを消すには、
模打のたびにたとえば1秒必ず待ってから次のツモに進むようにして、
無く場合はこの時間内に申告しないといけないようにする、とかか。
進行は少し遅くなるけど。
419デフォルトの名無しさん:03/02/13 05:10
UIを一般的なものと変えて,より実戦的に造れば鳴きにも対処できる。

まず普通は 王牌,河,手牌 で,点数とか。
俺案では,ツールボックスで全牌の小ボタンを作成。
自分の手番の時に各牌にON/OFFを設定する
ON且つ鳴ける牌が出た時だけ処理は待ちを起こす

実戦でも・・「白なら鳴く,鳥はチーでチャンタへ。それ以外は面前」
とか「一通目,三色目の方なら鳴く」って感じだろ

ON/OFFの他に1〜4設定できるツルボを造り,
こちらから見てN枚目でON有効。 とすると「二枚目ならポン(4枚目)」なども

ややこしくしすぎるとパニくるだろうが
420デフォルトの名無しさん:03/02/13 07:14
>>415
同意。なんか大体そろってるじゃん。
DLL同士の試合公開機能とかあるといいね。あまりくわしくHP見てないけど。
421デフォルトの名無しさん:03/02/13 07:26
>>419
すでに十分ややこしいぞ
>>420
観戦できるし、COM4人の対戦も可能だから出来るはず
サーバーになってくれる人が必要だが
まずはまうじゃん内臓のルーチンに常勝できるようになるのが目標かね
自動対局もできるから1000局くらい戦わせてデータ取ることもできるし
423デフォルトの名無しさん:03/02/13 07:40
なんかソフトウェアの作者がはげしくカキコがんばってますな
424423:03/02/13 07:41
アゲちまった・・・鬱・・・
え〜からおまーどぉ、はょ国士一直線か染め専のソースうpれや
テンパイの判定ってどうするんですか?
>>426
そういうのを自分で考える、又は調べる気ないならやめれ。
自分でこつこつ作る。
だって、 NASA ほしいもん。
ホントにくれるんだよね。>>1
自動対局をノーウェイトのスピードでやれば寝てる間に数千試合のデータが取れる
え、みんなで考えるスレじゃないの?!
431デフォルトの名無しさん:03/02/13 15:51
>>426
役判定が出来れば出来そうだけど、役判定がなあ。。。なんかすっきりこない。条件文の羅列になりそうでやだ。
すでに定石があったりするのかな?
432247:03/02/13 15:53
取り合えずツモ切りOnlyの馬鹿cpuと卓を囲んで
点数の搾取が出来るところまで来たよ。

出来た
・手牌だけでわかる手役の判定と点数計算
・ポン

これから
・天和系、海底系、リーチ、特殊役の実装
・牌を河に捨てる
・チー、カン

NASAもらったら何しようかな。


433デフォルトの名無しさん:03/02/13 17:24
役判定はまずコクシ、チートイ、…、から。
>>432
手役の判定って、高目取りがあるから結構面倒だよね。
役満と役満じゃない役は重複しないんだよねえ?
>>434
あがり判定といっしょにやらなきゃならないな
面子解釈が1通りじゃない場合もあるから
437デフォルトの名無しさん:03/02/13 18:37
リーパイして、隣にある牌クラスと比べて面子クラスを確定させる作業を再帰的にえんやこらやと
やったらターハイしたときにぬるぽ?
麻雀ソフトをベクターで公開するスレはここでふか?
439デフォルトの名無しさん:03/02/13 18:42
とかいう以前に、役判定アルゴリズムはググッたらいくらでも出てくる

こういう底辺のライブラリの開発もいいけど、
役を「作り上げる」方のアルゴリズムを考えて生きたい
じゃ、まうじゃんプラグインでいいじゃん
>>437
例えば11112233が読めないと思われる。
発想自体はなかなかユニーク。
まうじゃん作者必死だな
445デフォルトの名無しさん:03/02/13 21:21
まうじゃんはダメでしょ。
まず、ソースが公開されてない。

例えば、ある牌を抜いて
試験的にいろいろ試してデータを取りたいとき
どうしようもない。

プラグインの開発には、
いろいろなテストを実行できるような
環境が必要だからね。

>・バグの存在確率80%以上
あと、自分でこう書いてるんだからダメなんだろうね。

2ch発麻雀ソフトの開発ですか?
将棋はもうやめるのか?
448437:03/02/14 02:51
>>442
ああ、そのとおりですね。こりゃだめだ。ググってきまつ。
てか、叩いてほしかった・・・・なんつて。

「役を作りあげる」ためには自分のうち筋を冷静に分析してみることから始めてみます。
というか、暫定でもいいからルール規定してもらわないとなあ・・・。

ちなみにおいらの地方ルールでは「2」と「5」だけでチートイ作るとヤクマンです。
>>448
>ちなみにおいらの地方ルールでは「2」と「5」だけでチートイ作るとヤクマンです。
もしかして、これも叩いてほしいのか?
>>449
ワンズ、ピンズ、ソーズそれぞれ22, 55と揃えると六対子・・
チートイ不可能だね(笑)
勝手な予想だが、自分達でルールやぶりな役をつくって、
「この役すごいだろ!」
「馬ー鹿こっちはあがったら一億万点もらえるんだぞ!」
とかいいあってる奴らなのかも。
麻雀の低年齢化が予想されます。
452デフォルトの名無しさん:03/02/14 09:14
>ワンズ、ピンズ、ソーズそれぞれ22, 55と揃えると六対子・・
おまえ馬鹿でしょ
4*3*2=24
>>452
2255二二五五(225555)
さて何点でしょう
>>453
ノーテンですね(笑)
俺のところチートイで4枚使いアリだったあよ。
ウチの大学の寮では偶数だけ、または奇数だけで作った役が 偶一色、奇一色
(ぐーいーそー、ひーいーそー)。それぞれ二飜ですた
457437:03/02/14 12:50
四枚使いは普通は無しでしょ。つかネタくさかったらメル欄みてよ〜。

>>451
だ・か・ら、ルール決めようっていってんだよ・・・。

ttp://www.ma-jan.or.jp/rule.htm

これくらい張ってみることすらできねえのかよ。
がいしゅつだ罠ボケ
>>458
ガイシュツ?おーほんまやほんまや。
んで?なに?結局ルールは決めないのか?ん?
決めないなら決めないで自分が一番よくやるルールでってことか?
460デフォルトの名無しさん:03/02/14 13:22
俺の高校では中野区民が「中」であがるとリャンハン、
同じく色白のやつが「白」であがるとリャンハンだった。
お国自慢はもういいとして。ルール決めよう。
Wiki とかあると便利ですか?
関西では4枚使いのチートイもけっこうあるらしいよ
連盟とか協会とかどっちがアレなのかわからんな
何でお前ら麻雀板行かないんだよ…。
ローカルルールなんざどうでもいいっての。

個人的には東風荘第一のでいいと思うけど
喰いタンがないからプログラム的に余り面白くないんだよな。

とつげき東風氏のページを紹介しとく。
http://www.interq.or.jp/snake/totugeki/MJexeIODLLman.htm
これを用いた代打ちプログラムを不特定多数に公開することは許可しないらしいが
「個人的な研究」には使えるから、実戦で東風荘ツールを併用して
データ収集ができるのが利点。
>>465
まあ、それを使うとNASAはもらえないけどな(w
>>465
東風第2は食いタンありだからそれにするか?
>>459の必死さにワラタ。
469247:03/02/14 20:09
東風荘のルールってなんか合わないんだよな。
東南戦・食いタンあり・ノーテン親流れってのがしっくりくるんだが。
っていうか、ルール変更できないのを作ろうとしてるなんて論外だぞ
いかなるルールでも最強でなければならない
麻雀ソフトは全部そのくらいできるしね
まうじゃんとか
このスレで凸がでてくるとは(ワラ
>470
たとえばクイタンが有るか無いかは戦術上に大きな差を生むわけで。
最強の定義が今のところ麻雀の強さである以上、
どんなルールでも強いようなプログラムを作らなくても、ルール別に戦術を調整した
ものを適宜使い分ければ今は十分じゃないのか?
473デフォルトの名無しさん:03/02/14 20:50
>>470
んじゃ、なんでもありで
はじめから詰め込みすぎると、わけわからんよーになるよなぁ。
475デフォルトの名無しさん:03/02/14 20:54
どんなルールだろうと、メインエンジンを実際に提供してくれた人の仕様に従う。
477247:03/02/14 21:03
それじゃ、面倒だから国士とチートイは無しの方向で
>>477
むしろ国士とチートイは最も判定が簡単な役なのに(笑)
Javaの勉強のために作ろうかと手を動かしてるのですが、
いまいちイメージが湧きません。

例えば牌オブジェクトに関してですが、適用することが出来るべきメソッドは、
どんなものがあるんでしょう・・・。思いついたのは以下のものです。

int getNumber() // 萬子筒子索子の場合の数字(1-9)を返す。
        //風牌なら東0,南1,西2,北3
        //三元牌なら白0,發1,中2
int getType() // 萬子,筒子,索子,風牌,三元牌 の種別を返す。
boolean isManzu() // 萬子なら true
boolean isPinzu() // 筒子なら true
boolean isSouzu() // 索子なら true
boolean isKaze() // 風牌なら true
boolean isSang() // 三元牌なら true
boolean isRaoToh() // 老頭牌なら tue
boolean equals(Object) // 同じ牌なら true

足りないでしょうか。
>っていうか、ルール変更できないのを作ろうとしてるなんて論外だぞ
確かにメインエンジンはこの条件を満たすべきだし
そんなのはものすごく簡単な事だと思う。

>いかなるルールでも最強でなければならない
コンピューターがこの条件を満たす事は非常にすばらしいと思う。
けれど、これはすさまじく難しい。
481デフォルトの名無しさん:03/02/14 21:34
>>479
boolean isManzu() // 萬子なら true
boolean isPinzu() // 筒子なら true
boolean isSouzu() // 索子なら true
boolean isKaze() // 風牌なら true
boolean isSang() // 三元牌なら true

これは
クラスを作って
instance of Manzu
とかで判定した方がいいんじゃないかな?
>>481
それ以外の属性の判定との統一性がとれなくなるかも
C/C++的には、このへんの属性はbit列にすると楽っぽいが

あと少なくとも要るのは
「同種牌の次の牌を得る手段」(ドラ用)
「大小関係を判定する手段」(理牌用、役判定を簡素化するためにも有用)
かな。
麻雀ゲームは作れても、それが最強でなければ意味がない
花とか赤とかアリのルールなら、このへんの設計から取り入れないといけないかのかな。
>>484
花牌ありはとりあえず無視でイイんじゃない?
赤はとーぜん考える必要があるけどね。
設計的にはドラと似てるから簡単でしょ!
486デフォルトの名無しさん:03/02/14 23:36
なんか堂々めぐりだね。
>>486
だからルールは人の好みがあるから
ここでは決まらないんだって!
誰かテンパイ・役判定ルーチンを書いてうpしてよ。
>>488
テンパイは簡単だけど、
役判定はめんどくさそうだなぁ
役判定は、誰か一度書けば使いまわしが出来そうだね。
491デフォルトの名無しさん:03/02/15 00:08
データ構造教えろや。
>>481
instance of 使わなきゃいけないのは設計間違ってるぞ。

牌をオブジェクトとして捕らえる意味はあんまりないような気がするんだけどなぁ
493デフォルトの名無しさん:03/02/15 00:53
>instance of 使わなきゃいけないのは設計間違ってるぞ
理由を教えて欲しいんだけど
494デフォルトの名無しさん:03/02/15 00:56
>>465
そのDLLいいね!
とりあえず今ガリガリと書いてますが
鳴き を考慮するととたんに面倒くさいね
>>479
他に要りそうなの
boolean isJi() // 字牌なら true
boolean isYaochu() // 19字牌なら true
boolean isGreen() // 索子の23468or發なら true
boolean isMyWind() // 自風牌なら true
boolean isGameWind() // 場風牌なら true
boolean isDora() // ドラなら true
boolean isRed() // 赤なら true
int getExposed() //場に見えてる枚数を返す
ちなみに字牌はツーパイと読みます
>>492
OOを適用する場合、
対象となるものをオブジェクトとして捕らえる意味が
あるか無いか等という事を考えるべきではない。

全てはオブジェクトなのだから・・・
498247:03/02/15 10:35
駄目だああ。行き当たりばったりのコーディングではどうにもならない。
麻雀のルールって超すげー複雑。俺が甘ちゃんだったよ。



>>495
>boolean isMyWind() // 自風牌なら true
>boolean isGameWind() // 場風牌なら true
>boolean isDora() // ドラなら true
>int getExposed() //場に見えてる枚数を返す
これらは牌自体が持つ属性ではない。あくまで場に依存する性質。
したがって牌のメンバーにするべきではない。
>>498
とりあえず、何処でいきづまっているのか報告しれ。
>>498
がんばれ♪
502247:03/02/15 11:15
んー、ぶっちゃけ全部なわけだが。
設計が甘くて、例えば、
山の残りが1枚の時は槓できない、なんて条件をひとつ追加しようと思っても
10箇所くらい手を入れなくちゃならない、ていう感じで。

取り合えず恥を忍んでうpするから、まあちょっと待ってくれ。
503247:03/02/15 12:10
http://www.geocities.co.jp/SiliconValley-Oakland/9797/mj1.lzh

・ソース同梱
・コンパイラはBCB6Personal
・メインのコードはVCLに依存していないはず(多分)

・UIは作りかけ
・ひどいコードだと笑ってください。
>>503
乙。
ところで、
>struct Mentsu { char Pai; char State; };
気持ちは分かるが、今のうちに「赤」の事も考えとけ。後で泣きを見るぞ。
505247:03/02/15 12:57
いま泣いてるyp
506247:03/02/15 14:08
牌は0〜135の数字でやっとけば問題無い筈だと思うんだ。
>>503
Unit2.h, Unit3.hがない
ってーかこの名前どうにか(笑)
508247:03/02/15 14:29
>>507
すまん。直し忘れだ。 
#include "Unit2.h" −> #include "Mahjong.h"

#include "Unit3.h"
は消してください。
>>508
そのように数カ所修正したら実行開始はできたけど、
半荘開始してもツモ順ですって出るだけで
下に並んでるボタン群はButton1とかそれぞれ表示されたまま、無反応な感じ・・
上下に並べて表示
だから、まうじゃんにしと(ry
作者必死(ry
ライバルソフト作者必死(ry
>>493
instanceof 使いたくなるときってインスタンス使う側での条件分岐になるんだけど
それは委譲と多態使うのが定石だと思うんだが。

http://www.alles.or.jp/~torutk/oojava/maneuver/2001/style/essentialJavaStyle.html
この辺の「Choosing Message」とか。

ただ、処理によっては使わざるを得なかったりするのはあるはずだけど。

515デフォルトの名無しさん:03/02/16 02:13
>対象となるものをオブジェクトとして捕らえる意味が
>あるか無いか等という事を考えるべきではない。
理想と現実は違うよ。
すべてをオブジェクト・・・と言うのは
すべてを汎用的に・・・と言うのと同じです。

>instanceof 使いたくなるときってインスタンス使う側での条件分岐になるんだけど
もちろん、多態を使うためにオブジェクトにするわけだ。
Compararatorって知ってる?
ソーティングに使うんだけど
あれはオーバーライドする時に中でinstanceofを使うわけだ。

instanceofを使うのと、
isXXXで属性を確認する事は同じことでもある。
ただし、後者は実行時に変化する可能性がある。
牌のプロパティーとしては、普遍なわけだから
classという事でいいと思う。

ただし、実装という意味では
イーピン、リャンピンの差は
メンバ変数として持つ方がエレガントであると思う。
いろいろなアルゴリズムの組み方はあると思うが、
一番典型的というか簡単なのは、確率調整型アルゴリズムだと思う。
今の自分の手にある牌+他人と自分の捨てた牌(河牌だっけ?)、
他人が鳴いた牌から残りの牌の数を推定し、自分の手からどこへ
持っていくのが一番ウマーかを判断する。

あと、オーラスまでの点数なんだかんだは後でもいい気がする。
517479:03/02/16 19:31
牌クラスを作ってみました。
http://pjam.jpweb.net/asugawara/mj/
518デフォルトの名無しさん:03/02/16 19:49
乙。hashCodeメゾットは何に使うんだ?
>>518
コレクション系のクラスの内部などで使われるハッシュ値じゃないの?
520247:03/02/17 01:19
>>479
nextと独立して、
同色のn個上(or下)の牌を返す関数なんてのがあると便利だと思うよ。
誰か作ってる・・・?
>>521
作ってるよ

ところでピンフに走るときとトイツ系に走るときとの
境目って条件にどういう重みをつけてる?
シュンツ、ターツのピンフ系重みを4,2
トイツ、コーツのトイツ系重みを同じく4,2くらいにして
延べ合計の比較でどちらを優先するか決めてるんだけど
最初の牌パイからの流れとか考慮したほうがいいのかな?
>>522
お? もう思考に着手してるのか。
流れはコンピュータとしては気にしてもしょうがない気がするなー。どうだろう。
>>522
昔作ったやつは、そういうしきい値テーブルを
戦術ごとに用意しておいて、状況に応じて戦術を変更するようにしてた。
戦術を決定する条件の定義と、その実施を分離して考えるのね。
>>524
まあいってみればトイツ系ピンフ系という戦術
を切り替える部分なんだけどね
でももう少し思考を階層化しておいたほうが
幅が広がるし作るのも楽になるか・・・
526デフォルトの名無しさん:03/02/18 21:40
まだできないのか?
口だけか?
>>522
流れといえるかどうかわからんけど・・・。
たとえば毎回ツモった牌を全部記憶させておいて徐々に判断するとか。最初の頃はリャンメン待ち優先とか
ヤオチュウハイはとりあえず捨てる(爆)とか単純な考えかたで徐々に流れに対応させていくのはどう?
最初から最強じゃなきゃ駄目だ
半ちゃん毎にトップじゃだめなのかっ!? (´・ω・`)
とりあえず作ったプラグインではなにもせずに、別起動のアプリとの橋渡しをさせる。
他の奴が考えてる間も自分は裏で思考して、次の情報が来たら割込み処理で・・
531デフォルトの名無しさん:03/02/19 20:32
>たとえば毎回ツモった牌を全部記憶させておいて徐々に判断するとか。
確率という言葉は知っていますか?
テストケース A
ドラ=南(東1枚)東一局〇本場1順目
東家>西。南家>西。西家>東
北手牌 123456789東東西北 つも=西
北を切った 0点
ダブリーまでした −100点
西をツモ切った 100点
東を切った 98点(手出しは・・なんか惜しい)
西家の東を叩いて西を切った 80点
西家の東を叩いて北を切った 10点
>>531
流れなんてないよ

とは爆岡の台詞だったか。
534デフォルトの名無しさん:03/02/19 22:08
牌がランダムに来ることは明らかだと思う。
流れとは、勝っているときに
さらに勝ちを狙いに行くか、抑えるかとかの
引き際みたいな話なんじゃなかろうか?

>>531
確率が偏るからむづかしいんじゃないの?
確率で作ったら最強か?

>>534
どうやってCPUに「もうちょい勝ったらソープいけるな。勝ちに行く!」と思わせるか。かもw

勝負には「流れ」はあるけど、それは
「確率」が偏ることではなくて
打ち手の判断力とかコーヒーの温度とか
そういった「状況」が偏ること
537!522-536:03/02/20 04:03
手積みだと、積み込んでる訳ではないのに
上手く混ざってないため、ある程度揃ってしまう事がある
俺的には、それも含めて流れと呼んでいるが
まぁ、デジタルな世界では、全く関係無い話ですね…
>>537
じゃあ、手積みっぽい混ぜかたをする
洗牌アルゴリズムでも考えるか。
「なんかトイツ場だなあ・・」って思わせる?
CASE 東1局 南家

  牌パイリャンシャンテン。しかしただのピンフ手。
  ここは早くあがって親を引き寄せるか、はじまったばかりなのでまわしていくか。
  
  1)「今日は配牌いいな。よし早めに親になって連荘狙うか」
  2)「じっくりと手を育てていくか」

  どっちかを実行して(50/50)その結果から打ち方を訂正していく、あるいはそのまま続けてみる。


>>539
そういうのはあるよ
トイツ場ってのは確率の面から見ても存在する
チンイツとかもそう
役の同時性ってのはオカルトじゃなくむしろ科学的なもんだ
>>540
配牌がイイから手を育てていくんだと思うが…。

>>541
その通り。だからプログラムにも相手の手役予測にも、
いれたいよね。
上家の不要牌を予測させたいぽ。
対戦成績っていらないの?
最強を目指すなら、相手によって
打ち回しを変えるのが当然だと思うし
そうじゃなくて、確率のみでやってると
その癖が出て、人間相手には勝てないと思うし…
545デフォルトの名無しさん:03/02/21 03:09
麻雀のゲームをもっと簡単にする。
1から13までのカードがあったとして、
それを一枚づつく4人のプレイヤーに配り
最も数字の多い人が、全プレイヤーから2点づつ
もらう事ができる。
ただし、カードが配られた時点で降りていれば
1点を支払えばすむ。

このゲームの最適戦略はなんだろうか?
また、このゲームにおける最強のコンピューターを作る事はできるだろうか?
ああセブンブリッジを思い出した。
トランプの宿題?
548デフォルトの名無しさん:03/02/21 03:22
じゃんけんみたいなゲームにおいて
最適戦略を出すにはゲーム理論が必要なのかな?
相手が偏った手を出してきた時に、
即座に対応するプログラムってあるのかな?
>>548
ジャンケンで先に10回勝った方の勝ちってルール(うろ覚え)で
100人と勝負して、ほぼ全員(2人位の負けはあったような無かったような…)に
勝てる、おばちゃんをテレビで見た事があるよ
その人に聞けば、勝負のコツが分かるので
対人のプログラムも出来るかもしれない…
>>548
過去の相手の出した手を記録しておいて、統計的に予想したら
作った本人が勝てなくなったってのを、ム板でだれか書いてたよ。
CPU対人ね。
りきむとグーを出す傾向があるらしいよ。
対戦中に逐一プレーヤをからかうようなメッセージを表示して、
怒らせてパーで仕留めるっていう戦略はどうだろう。
アイコになったらその手に負ける手を出す。ってのは一般的?
スレチガイスマソ
結局、麻雀が作れなくて
ジャンケンスレに落ちぶれたか・・・
>>544
>対戦成績っていらないの?
>その癖が出て、人間相手には勝てないと思うし…

オレは対戦成績はいらないと思う。
"その癖"って例えばどーいうの?


555デフォルトの名無しさん:03/02/21 23:57
相手の戦略変更をいかにして検出するかが問題となる。
>>555
だから相手の戦略を読む必要あるの?
557デフォルトの名無しさん:03/02/22 00:15
ダマでどの程度当たってくれるか
どうせあたらないならリーチかける
558デフォルトの名無しさん:03/02/22 00:15
>>556
お前アホか?
そりゃあるだろ
ピンフ好きなやつなら筋切ってりゃいいんだし
>>556
お前の方がアホだろ!
トイツ場なのにピンフやるやつの
戦略なんて読んでどーする。
(読まなくても勝てるって意味)
>>559
ネタじゃないのなら
どう見ても、お前の方がアホ
>>559
お前アホか?
場の状況も相手の好きな手もどっちも重要なファクターだろ
バランスが大事なんだよ
562デフォルトの名無しさん:03/02/22 01:04
class Saibara {
 enum { KOKUSHI } yaku;
 yaku mode;
public:
 Saibara (): mode(KOKUSHI) {}
 virtual void play () = 0;
};

これを基底クラスにするんよ。
563デフォルトの名無しさん:03/02/22 01:14
>だから相手の戦略を読む必要あるの?
たとえば、相手がずっとグーを出してきていて
いきなり、ずっとチョキをだすようになったら・・・

麻雀というゲームでこのような戦略変更が
どの程度影響があるのかは知らないけど
あるかないかで言えばある。
悪党面した奴がいかがわしい口調で怪しい儲け話を持ちかけても
誰も相手にはしない。
麻雀だって同じ事。
要はどんな戦略が大事かではなくて、どういうタイミングで相手の期待を裏切るかが大事。

相手の癖や戦略を統計的に測ろうとすれば、それはそのまま相手が有利になることでもある。
なぜなら、それを勘案して着手することは相手の土俵で戦うことでもあるからだ。
そして、この考察の結論は「相手の癖など考慮することはない」という事になる。

まして「相手の好きな手を覚える」なんてのは、それ以前に無意味だろう。
待ち筋や最終形の分析ならまだ意味はあるかもしれないが。
せめて「相手が一度も上がらなかった手」をひたすらカウントするとかね。
(同じ相手と同じルールで何百回もやらなきゃだめだけど)
まあ、この手の「相手の癖」うんぬんてのは学生同士で同じ相手とひたすら対局してる奴の
発想だろうな。

スレ違いだね sage
なんか昔、ビクターが出していた「雀豪」というソフトを思い出したよ
打ち手の手筋をサンプリングして対戦できる機能があって結構興味深かったな
>悪党面した奴がいかがわしい口調で怪しい儲け話を持ちかけても
>誰も相手にはしない。
>麻雀だって同じ事。
なんで、これが
>要はどんな戦略が大事かではなくて、どういうタイミングで相手の期待を裏切るかが大事。
この結論に繋がるのか、小一時間程(略

>相手の癖や戦略を統計的に測ろうとすれば、それはそのまま相手が有利になることでもある。
>なぜなら、それを勘案して着手することは相手の土俵で戦うことでもあるからだ。
なんで、これが
>そして、この考察の結論は「相手の癖など考慮することはない」という事になる。
この結論に繋がるのか、小一時間程(略

まぁ、自分の中で、勝手に結論を付けるのは良いけど
最強を目指すのなら、絶対に同じ相手の履歴は必要だと思うよ
分かり易い所で考えると、
テンパったら必ずリーチする香具師とか
そう見せかけて、ダマで上がる香具師とか…
まぁ、何にせよ、相手がどんな香具師か分かるだけで
打ち方は全然変わってくるし
逆に、誰に対しても打ち方を変えない香具師は怖くないからね…
>>566
でもむしろ強いヤツは相手によって打ち方を変えたりしないぞ
まあ人間の場合は「ペースを保つ」というのが重要だからな
その点我々のような機械にはそんな弱点は無い
>>566
> >悪党面した奴がいかがわしい口調で怪しい儲け話を持ちかけても
> >誰も相手にはしない。
> >麻雀だって同じ事。
> なんで、これが
> >要はどんな戦略が大事かではなくて、どういうタイミングで相手の期待を裏切るかが大事。
> この結論に繋がるのか、小一時間程(略
>
> >相手の癖や戦略を統計的に測ろうとすれば、それはそのまま相手が有利になることでもある。
> >なぜなら、それを勘案して着手することは相手の土俵で戦うことでもあるからだ。
> なんで、これが
> >そして、この考察の結論は「相手の癖など考慮することはない」という事になる。
> この結論に繋がるのか、小一時間程(略

ここを小一時間話さなければわからないなら
まあ君は人間相手ではちょっと麻雀はやめといた方がいいかもね。


でもプログラムとしては相手の履歴機能はあった方がいいね。そのとおり。
あとの例はちょっといただけないが・・・
テンパったらリーチってどうやってデータ化できるんだ?小一時間
見せかけてダマであがるってどうやったら・・・小一時間
聴牌しても上がれない場合のほうが多いんだよ。
人間相手ならどうやってデータ化するつもりなの?
>>568
終わったらみんなで聴牌見せ合うような奴なんだろ。
相手にするな。スレ違いだし。
570559:03/02/22 11:11
話しがわかる人がでてきてよかったよ♪
オレは説明が下手だからアホ扱いされたし…。。

>>566
>テンパったら必ずリーチする香具師とか
それはシロートだから怖くない。

>逆に、誰に対しても打ち方を変えない香具師は怖くないからね…
怖い。
今仕様確定・コーディングに動いてるのは何人ぐらい?
じゃんけんは1/3の確率でランダムに手を選択する戦略が最強です。
>>25-26をお忘れですか?
>>573
そのプログラムにも負けません。乱数はMersenne Twisterで生成。
575デフォルトの名無しさん:03/02/22 21:16
なんか確率について勘違いしてる人がいる
サイコロの1が出る確率はまず大体 1/6 だけんども
終盤で初牌の 發 をツモる確率は 4/残り牌数 じゃねーべ?
場に無きゃ誰かが持ってんだ と思うんが自然だら
確率とは人間の勘のことです(w
>>575
>なんか確率について勘違いしてる人がいる
お前は「確率」というものについて語れる自信があるのか?(w
578デフォルトの名無しさん:03/02/22 22:02
捨て牌から相手の牌の確率分布を推定する必要はある。
HMMを使うといいのかも。
579575:03/02/22 22:05
ありますが何か?
>>579
ヘンペルのパラドックスについて、どう思う?
>>575

×初牌
○生牌
初と發をかけたんですか?
582デフォルトの名無しさん:03/02/22 23:11
>じゃんけんは1/3の確率でランダムに手を選択する戦略が最強です。
グーで勝つと5点
チョキで勝つと10点
パーで勝つと15点の時
(引き分け0点、負けても0点)
最適戦略は何ですか?
>>582
何回勝負ですか?
584デフォルトの名無しさん:03/02/22 23:49
>>576
レンジでミルクを温めたときに取っ手がこちら側にくる確率はとっても低いです。
585572:03/02/23 01:21
>>582
得点を最大化する戦略=最適戦略とすれば、最適戦略は
グーを6/11、チョキを3/11、パーを2/11で選択する戦略です。
586デフォルトの名無しさん:03/02/23 01:54
なんでこのスレにはじゃんけんの話をしている人たちがいるわけ?
もしろ>>25-26意味がわかりません(´・ω・`)ショボーン 解説キボンヌ。
>>587
「最強プログラム」のやってることは、コンピュータ同士のじゃんけんで
勝負前に相手のプログラムを(インチキ的に)呼び出して、そのとき
グーばっかり1000回ほど入力した後(このとき相手のプログラムはパーを
選ぶように「学習」してしまう)、本番の勝負でチョキを出す、という感じです。

教訓としては、どんな戦略でも過去の履歴を利用する戦略は
最強にはなり得ないということっすね。
>>588
おーありがとう!
関数ポインタ・・・(゚Д゚)ハァ?だったもので・・・
なるほど。>>25-26 は面白いな
相手も同じプログラムだと大変なことになるが。
相手の戦略は読む必要なし!
ラグも考える必要なし!
流れも考える必要なし!
みんなで神の一手を目指そうぜ
役満しか狙わないプログラムでいいじゃん。
>>593
ダメだろっ!!
595デフォルトの名無しさん:03/02/24 01:07
for( int i = 0; i < 14; i++ ) {
  if( IsYaochu( pai[me][i] ) ) {
    gomi = pai[me][i];
    break;
  }
}
if( gomi == NULL ) {
  gomi[me][ (int)(rand()*14) ];
}
return gomi;
gomi = pai[me][ (int)( rand() *14 ) ];
だった。
597デフォルトの名無しさん:03/02/24 01:10
>>593
天和、人和、地和しか狙わないプログラム。
>>597
どれも狙う役じゃないだろっ!!
>>595
何をする関数?
意味あんの??
>>598
配牌は、コンピュータ側の仕事なのです。
>>599
baka baka baka
この御時世、人和を役満にするような馬鹿いるの?
ここまで読んだが、麻雀上級者は俺しかいないよう棚
>>603
ナイス妄想棚
605デフォルトの名無しさん:03/02/24 12:56
>得点を最大化する戦略=最適戦略とすれば、最適戦略は
>グーを6/11、チョキを3/11、パーを2/11で選択する戦略です。
これってどうやって計算するんですか?
この計算方法を麻雀にも取り入れることはできますか?
>>605
ゲーム理論
リーチするタイミングってどーする?
>>602
オマエガナー
>>607
点の状況、場の状況、ルールによって違う
>>609
だからプログラミングの時、
どーいう条件の時リーチするのかってこと!!
>>610
まず、鳴いてたらリーチはしない
次に聴牌してるか判断
聴牌してたら待ちを調べる
枯れてなければリーチする
>>611
テンパイ即リーじゃ"最強"にはならないだろ!!
613611:03/02/25 13:03
>>612
そりゃそうだ
そこがわかってるなら大丈夫だ
>>612
>>611に加えて、山を詰んでいる配牌ルーチンにアクセスして、
残りの待ち牌を調べ期待値を算出、確率がある値より高ければリーチ。
>>614
それはずるじゃないのか?河と自分の手牌からだろ?
>>615
extern void PaiSearchInnami(void *ptr);
617デフォルトの名無しさん:03/02/25 22:44
ズルしてでも最強ならいいんじゃないの?麻雀でしょ?
int PaiSearchInnami(int *YamaIndex)
{
  for(int i=0;i<4;i++)
  {
     if(Member[i]->Skill == BaiNin && Member[i]->Luck >= 10)
     {
       SetGameResult(IkasamaHakkaku);
       return -1;
     }
  }
  reutrn Yama[YamaIndex];
}
619デフォルトの名無しさん:03/02/25 23:25
マージャンのプログラムというより、マージャンの一般セオリーを
語っているに過ぎないのだが・・・。
>>614
上がれる確率だけでリーチはかけないだろ!
手がわりとか考えないの??
621桜井章一:03/02/26 01:34
NASDAと、あとKEKもつけるよ。
いらない。NASAだけでいい。
NASAが僕のものになったら、スペースシャトルいまあるやつ
全部同時発射する予定。
623247:03/02/26 03:29
よくわからんけど、KEKは欲しいな。
カミオカンデは別枠なのか?
>>621
後付けなし
625デフォルトの名無しさん:03/02/26 16:29
最強の脱衣マージャン?
626デフォルトの名無しさん:03/02/26 16:34
ついにオレの麻雀プログラムが自我に目覚めました。
>>625
プレイヤーが楽しめないだろ!!
>>627
プレイヤー:女
ギャラリー:俺
>>628
オレは何役ですか?
>>629
リーチ棒
>>630
せめて台詞ありにしてくれ
漏れのリーチン棒でもn(ry
今度は最強のVシネづくりですか?
麻雀に強いとか弱いとかあるのか?
鍛えて強くなるような強さはないだろ?
知ってるか知ってないかの違いだけじゃないのか?
何を?
>>634
たぶんお前は周りから「カモ」
ってよばれてるぞ。
>>634
>麻雀に強いとか弱いとかあるのか?
ある

>鍛えて強くなるような強さはないだろ?
鍛えて強くなる

>知ってるか知ってないかの違いだけじゃないのか?
何を?
麻雀は神経衰弱のようなものです。
記憶力と運で勝負が決まります。
実際、麻雀のプロ1名 vs 容赦ない(重要)ソフトプレイヤー3名 で
100局ぐらい打たせてみたら、雀プロはトップ取ることできるんだろうか?
>>639
安藤なら勝てる。
井出には無理。
どっかの麻雀雑誌でこういう企画やってくんないかな。
当然だけと、ソフトプレイヤー同士のイカサマはなしでねw
厳密に実力勝負。
チェスや囲碁、将棋と比べると麻雀というゲームはコンピューターのほうが
かなり有利な勝負に思える。
>>638
実力(=記憶力+決断力+構成力+etc)と運で決まります。
>>642
運も実力のうち
というか、良いツモだったらこう、悪いツモだったらこう
って戦略立てておくだろ。
>>642
記憶力・・・多くのものを記憶できると手が確定するから有利
決断力・・・どんな人がどうだと何故有利?
構成力・・・どんな人がどうだと何故有利?
>>641
将棋はコンピュータ選手権を定期的にやるようになってから
レベルが上がり、選手(?)層が厚くなった。
この大会で上位に食い込めばソフトが売れるから。

麻雀も何らかの形で大会を行えば優秀なアルゴリズムが次々開発されると思われ。
>645
雀卓サーバーみたいなの作って、それに対応した
クライアントとして動作するような麻雀ソフトでないと
対戦させるのは難しいね。
>>644
例えば、1巡目
14牌ある中から1牌を選択するのは、
人によってどの牌を選択するか異なるよね?
その理由を考えれば自ずと答えはみえてくる。
(1巡目なので記憶力に差はないとする)
>>646
そこで東風荘を使う
>645
あんまこのスレに関係ないけど、
大局将棋なんかの人が一局一局打つには規模が大きい遊戯は
コンピュータ選手権主体てのもありかもな。結構発展しそう。
>>647
それが決断力? いくら決断力があってもそれで有利になるかどうかは運しだい。
決断力は勝利の要素にならないねぇ。
なるだろ・・・。
ランダムに捨てたときよりその決断力とやらを働かせた場合の方が強い。
>>651
決断力ってなんのことか分かってますか?
決断力があってもなくても同じ牌を捨てることがあるのですよ。
ランダムに捨てたら弱いですが、決断力が無いからランダムに出すわけじゃありません。
決断力と捨てる牌の決定とは関係ないのは言うまでも無く分かるよね?
勝利を決定はしないかもしれないけど
勝利の要素になるのを否定はできないんじゃないの?
だって勝利の要素になる根拠を誰も書いてないもの
>それが○○? いくら○○があってもそれで有利になるかどうかは運しだい。
>○○は勝利の要素にならないねぇ。

勝利の鍵は運一択だ!
運の良い麻雀プログラムを作れ。それが最強だな。
>>652
決断力がない=無限ループ

もう、他の人達は激怒ですなぁ。。
つまり、>>652は 決断力≒切るまでの時間 と言ってるわけだ。
あー、あれだ。
>>652はバランス派の男なんだよ、きっと。
優柔不断そうなプログラムだ・・・。
>>658
ファミリー寿司とか買ってくると中に入ってる
緑色の仕切りって バラン っていうんだよね
ラスになりそうだったら代走頼んでトイレに入る処理必須
>>658
カイジかよっ!!
>>661
ここのトイレには 窓は無いぜ・・・

必殺技 不発
>>661
"最強"ならラス以外でもトイレだろ!!
665デフォルトの名無しさん:03/02/28 03:02
相手がヤクザな人で、こっちが大勝しそうなときも条件に
入れといてね。
666デフォルトの名無しさん:03/02/28 07:35
あー、でもテンパったときのリーチ判断ルーチンていうのは
プログラムのキモだと思うな。
で結局決断力ってなんなんだ?
探索を止めるポイントのことか(w
>>656-658は他人の考えを予想しているだけで
それがあっているかも分からないし、
しかも自分の考えは一切なしな訳だが、
それって負け惜しみっていうのよ。
669デフォルトの名無しさん:03/02/28 08:40
1ヒューマンプレイヤー vs 3コンピュータープレイヤーになった場合
イカサマはしなくても、人間のみを狙い打ちにするような作戦取られたら
ヒューマンプレイヤーに勝ち目はない気がする。
>>669
狙い打ちロジック=捨て牌読みロジックの存在が前提(・∀・)イイ!!
他家との協力ロジック=・・
狙い打ちロジックで対象の優先順位を、ユーザ・点数多い順などに・・

色をそれぞれ固めるとかは別のプログラムになっちゃうだろ
仕様追加 上家が5秒考えたら先ヅモして盲牌する処理
多面待ち、かつ、待ちがある確率以上で有効であるときのみ
リーチってことでいいっしょ。
捨て牌から、相手の待ち、出る牌を予想して、てことなので。
>672
他にも条件はあると思う。
点数考慮して、満貫でないと逆転できない場合とか。
ドラ3で役なしの手とか。
それまでの他家の傾向を分析し「一発だけは・・」な奴ばかりなら即リー
敵に役満や染め手の可能性高くなったら絶対ダマ
>>672
多面チャン がリーチの決定条件になることはない。
待ち牌の数 はリーチの決定条件になることあるけど。
同じこと言ってると思うなよ?
リーチしますか?
Q1 二二三三四四23456VV 3面11牌
Q2 壱壱壱2223334445 5面10牌
当然Q2はリーチだな。
んで仮にフリテンになっても目的の牌をつもるまではつきすすむ。
ツモ!リーチスーアンコウ単騎!
ワロタ
>>677 は なに切ってリーチするんだ
>>676
Q1はリーチする。

Q2は少牌だな。仮に
壱壱壱22233344459
だとしたら、
5切る。当然リーチはしない。 
>>681
>Q2は少牌だな。

Q1なら何を切るつもりだ?(w
>>682
Q1も少牌かぁ!!
結局>>676はネタか!
684デフォルトの名無しさん:03/02/28 23:19
つーか牌を捨てたときにあの形だったとき
リーチするかしないかであって
何を切るじゃないだろ
>685
いや、だからQ2はおかしい、ということ。
わざわざ5残したんだからスーアンコでなくてもいいってことでしょ。
>>686
壱壱壱2223333444 5
だったかもしれないし

俺はこれでツモりたくない
でもツモっちゃうかも
しかし安い
だが・・・
>687
迷わずカン
セオリーとかノウハウとかの「主観」の積み上げで最強になるわけねえと思うんだが。
ベイズ的に確率はじいて選択。これ。
>>689
セオリーは主観じゃないだろ!
つーか、お前ら人工知能のスレでどうすれば人間ができるか
ってことを語ってるに等しいぞ。
将棋スレのがまだ建設的だ。モノは出ないが。
692デフォルトの名無しさん:03/03/01 01:40
全てのパターンをDBに入れてSELECT
>>692
何パターンあると思いますか?
>>693
数えると頭がハゲる位
数えるの速いね。
>>695
貴様、何故、ワシがハゲてる事を知ってるんだ?
さては、アデランスの手先だな?
ふはは、その髪貰った!明智君さらばだ!
age
誰か作り続けてるんじゃろか
700デフォルトの名無しさん:03/03/01 16:19
ゲームとして成立してないのに?(W
>>700
おもしろそうなゲームじゃん!!
麻雀プロと麻雀ソフトの公開試合は過去にありましたね
結果は言うまでもないですがね
おまえら麻雀氏ら無すぎ
知ってそうなやつも初心者並みのコメント
プロは俺しかいないのかよ
>>703
(゚∀゚)ここにもいるよ
705デフォルトの名無しさん:03/03/02 05:10
流れがあるとか言ってる奴は
プログラマやめれ
>>702
俺も見た。どこか忘れたけど、わずかの差だったが
麻雀ソフトの方が勝つ確率が高い傾向にあるって書いてた。
プロいわく相手の顔色が読めないからつらいって。
改良する余地があるって言ってたから今はもっと強くなってるかな?
ヒューリスティックなルールを積み上げていく場合(例えばスジとかカベとか)
「強い」思考ルーチンはできても「最強の思考ルーチン」は望めない。
あくまで組み合わせ論的に可能性を列挙・取捨選択した上で、
「トップを取る上でその局にアガらなければならない点数」以上の点数を現在の局で
プラスできる可能性が最も高い手を選択していく、ぐらいの勢いでいかないと。
その決定がみかけ上人間が言うところの「スジ」あるいは「カベ」という
セオリーに従うこともあるかもしれないが、その戦略の決定プロセスは
ヒューリスティックなルールの積み上げとは全く異なるものであるはず。

将棋などの完全情報ゲームは理論的にはminimaxサーチで最強の思考ルーチンが
できちまうわけなんだが、麻雀の場合はどうなんだろう?
>>708
まあそこそこ強いのは作れると思う。
究極的に強くなったとして・・・

10半荘やって9勝するのは無理だとしても
1000半荘やって900勝するのは可能、とか
そういう感じの強さになるんじゃないかな。
710247:03/03/02 07:36
俺は、かえって逆だと思うけどな。
麻雀ってのは、降りるときは降りる、行くときは行くみたいな
メリハリが必要。
中途半端な手は、かえって悪い結果が出る。
少なくとも個人的にはそう思う。

で、組み合わせを列挙したところで、中途半端な手しか打てないと思うわけ。

だから、全ツッパルーチンとべた降りルーチンを作って(これならそんなに難しくないはず)
オートマトンにして、その切り替えの評価関数を煮詰めていくほうがいいんじゃないかな。

やってみなきゃわかんないけどね。
プログラマなら
御託を並べる前につくったらどうだ?
>>710
全然理論的じゃない説明ですね。
713247:03/03/02 09:06
>>712
もちろん。あくまで経験則です。
>>710
思考ルーチンを考える前に
まずはシステムを完成させれ(w
715708:03/03/02 16:21
>>710
いやいや、その「メリハリ」も、例えばどの手を選択しても得点期待値が
(その局の得点期待値っていうのはもちろんフリコミによるマイナスもすべて
含まれているので)マイナスであるなら、そのマイナスを最小に抑えようとする
戦略がすなわち(見かけ上)ベタオリになると思うんだよね。
>>713
ていうか、役判定も出来ないヤツが何を言うか! という感じです。
717247:03/03/02 21:01
>>714
まあ、もうちょっと待ってくれよ。

>>715
どうだろうね。
一様な期待値の求め方では、
すっぱりと暗刻落として下りる手は打てない気がして。

なんにせよ、漏れは人間的なゲーム回し重視のルーチンで組んでみたいのです。

>>716
その通りだ。ごめん。

>>717
まぁ、ガンバってくれよ。
http://www.gnu.org/directory/Games/board/xmahjongg.html
オープンソースの麻雀ソフト
思考ルーチン作成に徹したい人は使ってみては?
720デフォルトの名無しさん:03/03/03 02:11
>>717
押し引きみたいな2値判定がプログラムにあると
テストしてるときは見てて楽しいだろうな。
「もう降りんのか?」とか「タコつっぱりやめれ!」とか
プログラムに愛着がわくかもしれん。
721デフォルトの名無しさん:03/03/03 04:07
>>711
の一言で全員あぽーん
>>719
それ、中身は上海みたいやけど(笑)
723719:03/03/03 12:35
>722
うゎ、ほんとだ。ロクに確認せずに貼ったスマソ

責任を取って別の物貼り
http://www5e.biglobe.ne.jp/~tatano/program/mahjong/source.html
Javaのソース公開中。いくらかバグがあるようだし、実装が汚いが、無いよりマシか?というところ
724723:03/03/03 12:39
http://www.stevens-bradfield.com/MahJong/
こっちにもあった。スゲェやりにくいけど
725デフォルトの名無しさん:03/03/03 14:13
実は今までの意見を参考に、もう組み始めてる。
しばらくは東風荘で腕試し?するつもり。
726デフォルトの名無しさん:03/03/04 02:14
>>725
結果報告よろしく!
>>706
プロは顔色なんて見ませんが・・・
早く作れよ!!
手牌判定部 2%
他家判定部 5%
外部映像取得>表情判断部 25%
ユーザ心理判断部 67%
シャミ・コシ処理 1%
>>729
シャミ・コシ処理は必要あるの? 
だれかフレームワークを公開してよ。
>>731
それはできない
ソースまだ〜
麻雀ソフト作って儲けたいよ=
>>733
ソースは自分で
そーすか
>>735
氏ね
>>736
黙れ、のび太
738デフォルトの名無しさん:03/03/05 21:03
さて、そろそろ作ろうと思うんだけど
俺はルールを良く知らないんだよな。
でも、作るか。
ちょっと待ってろ。
>>738
ローカルルールとか多いしね。
740デフォルトの名無しさん:03/03/05 23:39
とりあえず、仕様を考えたので
検証してください。

まず、適当に誰が東西南北に座るかを決定します。
ここから1ゲーム目が始まります
1牌をランダムに並べる。これを山牌と呼ぶ。
2山牌から王牌にあたる7*2枚を抜き出す。
3王牌から一枚とってドラにする
413*4を配牌として、配る。
5順番にツモ&キリを行う。

そして、だれかが上がったときに
それで本当にあがれるのかをルールと呼ぶと
このルールにあたる部分が可変になる
という事でどうでしょうか?

鳴きに関しては、
優先順位の高い順に、鳴くかどうかを聞いていくと言う形
にしようと思います。
>>740
今更無いと思うが、完先ルールみたいな化石ルールはどうする?
それと、4カイカンで流局しないとかのルールもあるから
プレイヤーの全ての行動に判定が必要だね
742デフォルトの名無しさん:03/03/05 23:54
http://www.dec.jpn.org/~gatoh/mjrule/mjruletop.html
このサイトを参考にしています。
743デフォルトの名無しさん:03/03/05 23:56
>>741
http://www.dec.jpn.org/~gatoh/mjrule/mjrule12_3.html
これのうちどれを採用するかも
オプションで決定した方がいいという事ですね。

了解しました。

他にもルールが可変であった方がいいところとかあれば
教えてください。
>>740
細かいとこツッコんでいいか?

>3王牌から一枚とってドラにする
×ドラ
○ドラ表示牌

まぁ、わかってるならイイけど、
もしかしたらと思ってさ。
745デフォルトの名無しさん:03/03/06 00:29
>>744
ナイス突込みです。
初心者なので、用語の使い方が間違ってたりすると思うので
参考になります。
746デフォルトの名無しさん:03/03/06 05:16
さて、東風ボット完成したんだが
勝手にサーバーに複数IDでつないで
じゃんじゃん対戦しちゃっていいものなのか?

技術自体には違法性はないが、営業妨害とか迷惑なんちゃらとか
そちらのほうが気になる。
747デフォルトの名無しさん:03/03/06 05:27
役判定のサンプルならこれなんかどうだ?

http://giga.hp.infoseek.co.jp/NaoSoft/index.html の最下にある

http://giga.hp.infoseek.co.jp/NaoSoft/Yakuhantei/YHVer033r.zip
役判定プログラム 言語:C++ / 要:WIN DX8
(総当りで組み合わせを抽出し、最高得点を選択する方式)



個人的には、総当りではなく最短で判定したい気分。


748デフォルトの名無しさん:03/03/06 05:59
>>746
ID削除対象行為だよ
ボットだとバレなきゃ(ry
東風プログラム改変しての多重接続は違法かな?
改造しなきゃ複数ログインできないはず

そもそも、複数つなぐ必要あるのか?
対戦相手はたくさんいるだろうに
>>751
並列で複数のボットを対戦させないと効率悪すぎってことでそ。
1つのボットで100試合の結果取るより、10のボットで
それぞれ10試合させたほうが10倍早い。
プログラム改変が難しそうならVirtualPCとか使えばできると思うが・・・。
>>752
結果のログよりまずはバグ取りだろ
1試合1試合丁寧にやっとけ
Rシステム(雀力計測)あるんだから、10個で10ずつより、1つで100やった方がいい
10個でやると、1つでやったときのRの位置が計算できない(詳細なR算出方法が公開されていない)
>>754
詳細なR算出方法って・・・ 単にウマつきの点数と違うんか あれ。
違う
なるほど。

Rateとは何ですか?

 Rateとは実力を評価するための指針となる数値です。この数値が大きい方が実力があるということになります。Rateの計算方法はバックギャモンのRating計算方法を元に麻雀に合わせて修正したものを採用しています。

・Rateの数値が大きい方が実力があるということになります
・試合数が少ない場合は、Rate値はそれほど有効ではありません。20試合でRate値が2000あるよりも、200試合でRate値が1800の方が有効な実力を示していると言えます。試合数が300試合を越えていてRate値が1800を越えている人は相当実力があると判断して構わないと思います。
・試合数が多くなると、Rateの変動幅が小さくなります。実力がそのRate値近辺に集束されてくるとの考えによります。
・Rateの変動値と終局時に表示される点数とは関係はありません。点数が+60でも、Rateが+60になるわけではありません。
・自分よりRateの高い人と対戦して勝った場合にはRateの増え幅は大きくなり、負けた場合は減り幅は小さくなります。また、自分よりRateの低い人と対戦して負けた場合はRateの減り幅は大きくなります。勝った場合の増え幅は小さくなります。
・現在のRateの計算式は順位が影響します。1位ならRateは増えますし4位ですとRateは減ります。点数はRateの増減には影響しません。
つーかRに頼らず、一試合ごとの点数を自前で集計すれば済むだけの話と思うが・・・。
なにせボットだけじゃなくて、他のプレイヤー3人も含めて進行するわけだから、
地道に1試合ごとやってったんじゃアルゴリズムを改良した時に効果があったかどうか
判定するのに時間を食いすぎるような。
759デフォルトの名無しさん:03/03/06 18:56

やっぱり、コンピューター同士で
1000回くらい対戦させて
データを取ったほうがいいと思う。
というか、レーティングを気にするほど完璧なアルゴリズムが既に出来ているんですか?
コンピュータ同士で対戦させ
このスレでその牌姿を報告するべし
762デフォルトの名無しさん:03/03/07 01:32
誰か麻雀牌の絵を作りませんか?
jpg,gif,pngで保存してもらえれば
いいと思います。
訂正

誰か麻雀牌の絵を作りなさい
jpg,gif,pngで保存しなさい
頭と性格が悪い奴はどうしようもない。
今時フリーの物はいくらでもある。
http://www.wonderwitch.com/freedata/
765デフォルトの名無しさん:03/03/07 01:49
766247:03/03/07 02:07
取り敢えず形になってきた。
各プレイヤーのアルゴリズムは、
プラグインで個別に指定できるようにしろ
以上
768デフォルトの名無しさん:03/03/07 02:50
5回目以上のカンについて

4回目までのカンは
嶺上牌からツモれますが、
5回目以降はどこからツモればいいのですか?
769746:03/03/07 03:02
ん・・・
1つのボットで100試合〜10のボットでそれぞれ10試合
ということじゃなくて。
1つのボットで100試合やる時間があるなら、10のボットでそれぞれ100試合なんだが。

それにRにはこだわってないよ。
問題なのはどのような状況で負けるかだけだし。
負けた場合はなにが原因か。確率的な負けなら避けようがない。
問題があるなら修正。統計とって一番多い負けパターンから修正するでしょ。
大量のデータ>修正>データ集め> を短時間に行いたいだけなのよん。
770746:03/03/07 03:08
あとRはこんな何順な式から導かれるらしい

自分のR + ( (他家平均R-自分のR)/60 + (2.5-順位(1-4)) * 20 ) * 試合数補正

試合数補正
試合数 係数
001-100 1.0
101-200 0.8
201-300 0.6
301-400 0.4
401-999 0.2

こんな数値で実力を測れるとは思えないね。
単に順位の結果によって数値が決まる。
5回目の槓はゲームの性質上出来ません
>>ウィンドウで隠れて何番か見えない
順位取る技術があれば強いと思わない?
773247:03/03/07 04:17
>>770
順位戦が駄目だって事?
それとも結果とは独立した実力(技術力?)を求めたいって事?

さて、シコシコ作ってたわけだが、取り敢えずココまで出来た。
http://www.geocities.co.jp/SiliconValley-Oakland/9797/mj2ch.lzh
>1
最強だなんて・・・ププッ
パソコンでやるんでなくてさ〜
雀荘いけばいいじゃん!
それとも対人恐怖症か?
775247:03/03/07 04:53
半荘中止ボタンは駄目駄目です。落ちます。半荘を終えてから終了してください。
特にUserForm使うと危険。半荘中に閉じたら強制終了しか術がなくなります。

http://www.geocities.co.jp/SiliconValley-Oakland/9797/mj2chvcl.lzh
>>773のはVCLが必要かもしれないので、動かなかった場合こっちを試してみてくだしゃい。

http://www.geocities.co.jp/SiliconValley-Oakland/9797/mjimages.lzh
牌の画像入れ替え用。imgフォルダを入れ替える。
中身は>>765のやつと落書きです。

http://www.geocities.co.jp/SiliconValley-Oakland/9797/src.lzh
メイクできないけど、主なソース

取り敢えず今のところ、同じdll同士で対戦できない(バイナリが別なら出来る)等
駄目駄目ですが、取り敢えずdllの仕様だけみると思って見てください。
リーチできねーじゃん
後、シャンテンが一つずれてるような気がする
点数計算も間違ってます
778デフォルトの名無しさん:03/03/07 07:35
HDDも初期化されます
すごいな、本当にやるなんて
俺なんかこんな高度なプログラムできないよ
ガンバってくれよ
しかし史上最強の麻雀アルゴリズムができたとして・・・・
それを何に使うかだ問題だ
普通に考えたら麻雀ゲームしかないだろなあw
>>781
意味不明
>>781
いや、これで次期内閣総理大臣を決定するのだよ
784247:03/03/07 16:13
>>776-778
牌姿などとあわせてバグレポートきぼんぬ
リーチは今から書きます。
>>784
あんたにほれた。
早くつくれよ
787デフォルトの名無しさん:03/03/07 16:37


                   ボッキアゲ

           ヽ(`Д´)ノ  ヽ(´w`)ノ   ヽ(`Д´)ノ      
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.|
        |                         |
        |                         |     

                  インポサゲ
                 

           ヽ(´Д`)ノ  ヽ(´w`;)ノ   ヽ(´Д`)ノ      
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.|
        |                         |
        |                         |     
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>>787-788
君たちはそんなハレンチなことばっかり言って
ハレンチ育ちか!?
誰か結果とかないの?
791247:03/03/07 22:26
792デフォルトの名無しさん:03/03/07 23:02
ソースコード読みにくい
役牌・ドラ8032123を和了られたときには萎えた
どっからそんなドラでてくるんだよ、逆転できねーよ
あがったのにリーチ棒が貰えてないよ

32符とか表示しないで、ちゃんと表示してくんろ
38符→40符
42符→50符

つーか、一回あがったら動かなくなった罠
まだまだバグだらけか…
初期のリブレットを見ているようだ






















                                     分からんか(´・ω・`)
797デフォルトの名無しさん:03/03/08 00:10
Java版キボン
798247:03/03/08 00:12
>>793
最強だから。

いや、まっことすまんです。
>>791のでは直っていると思うんですが。。。

>>792
ごめん。

>>794
リー棒忘れてました。

動かないってのはひどいですね。
もう少し状況を詳しく教えろ

>>798
まぁガンバレ
東2局に行けた香具師いるのか?
トイトイと染めしかやらねーじゃん
裸単騎多すぎ
弱すぎてウンコ出た
コピーすんの面倒だったから、前回の面子DLL混ぜてやったらフリーズした
どれを落としてもvclがないと怒られてしまう。。
"最弱"決定だな。
805247:03/03/08 02:47
>>802
混ぜたら危険

>>803
これならどうですか?
http://www.geocities.co.jp/SiliconValley-Oakland/9797/mj2ch02.lzh

東二局に進まないってのは、原因がさっぱりわかりません。こっちでは再現しません。
UserFormをクリックしてみるとかしてみても駄目ですか?

806デフォルトの名無しさん:03/03/08 04:38
>>805
とにかくガンバレ。

お前のような奴が世界を動かす。
次局に進まないってのは、>>802が原因だった
付属してた今回ryuをコピーして面子揃えたらちゃんとできたよ
・今の段階で「半荘終わるまでは打て」はウザイ
・ドラが表示されない
・自摸切りか手出しか分からない(重要)
・最初だから、どっちかというと全く鳴かないAIの方がいいと思う。鳴くと役が狭められるし
・今、誰が親なのか分かりにくい(そりゃ分かりますがね)
・東1局 0本場
 34符8翻 自風牌 場風牌 対々和 混一色 ドラ2
 25000 25000 25000 25000
 0 -24000 24000 0
 ↑この点数変動でどうなったのかを書いてほしい
 例:25000 1000 49000 25000
・起家マークキボンヌ
・ドラ0という表示は必要ない
・5飜は満貫、6〜7は跳満、9〜10は倍満、11〜12は三倍萬、13〜は役満と表記せよ(4飜や3飜の一部も満貫な)
・負けても脱がないという重大なバグ
8〜10だったね間違えたけどメンドイので訂正はしない
810247:03/03/08 06:10
>>807
胸のつっかえが取れたよ。

>>808
細かいところまでサンクス。

>・今の段階で「半荘終わるまでは打て」はウザイ
すまん。途中終了が上手く出来ないのでそうしてあるわけだ。
だから正確には「打ってくださいおながいします」です。
半荘中止を押してからUserFormの何かしら(手牌か無視ボタンか)をクリックで
終了できるはずです。(最初のフォームのボタンの文字色で見分けてください)

>・ドラが表示されない
表はもう出来た。もうちょい待て。裏はちょっ難しいので考え中

>・自摸切りか手出しか分からない(重要)
デフォルトのimgでは手出し牌の縁が光っているはず。
>>775の別の牌に変えればもっとみやすいかも

>・最初だから、どっちかというと全く鳴かないAIの方がいいと思う。鳴くと役が狭められるし
あれは・・・システムテスト用くらいに思ってください。

>・今、誰が親なのか分かりにくい(そりゃ分かりますがね)
>・ ↑この点数変動でどうなったのかを書いてほしい
>・起家マークキボンヌ
>・ドラ0という表示は必要ない
>・5飜は満貫、6〜7は跳満、9〜10は倍満、11〜12は三倍萬、13〜は役満と表記せよ(4飜や3飜の一部も満貫な)
まとめてやっつけます。

>・負けても脱がないという重大なバグ
(゚Д゚)ハァ?
811デフォルトの名無しさん:03/03/08 06:43
完成してから公開しろよ
なんだよコレ(w
恥ずかしくないのか?
中学生の部活活動レベルだぞ
一応もう一度書くけど倍満は”8〜10”ね
13〜は”数え役満”の方がいいかも
煽りは完全に放置で。
さっき四暗刻単騎待ちテンパった(*´Д`*)アハァ
815デフォルトの名無しさん:03/03/08 09:45
811は早く遊びたくてしょうがないらしいでつ
っていうか、2ちゃんねる自体が中学生の部活動レベルだと思っていますよ
10回やって、全部1位でした
ポン厨うぜえ
だから"最弱"決定だな
このスレ途中までしか読んでないけど、これじゃだめなのか?
http://doranizm.hp.infoseek.co.jp/develop.html
最強かつ最弱では?
闘牌さらせや
247殿
ビルド環境はなんでしょうか?ビルド可能なソースはあります?
誰かできたか?
よく途中のじゃんけんへの脱線からここまでもってきたな。
最強カモーン
826デフォルトの名無しさん:03/03/09 15:46
じゃんけんが脱線だと思ってるなら、相当なバカだと思われ
827デフォルトの名無しさん:03/03/09 15:49
828デフォルトの名無しさん:03/03/09 16:09
>>812
本格麻雀では満貫は7飜(+2バンバン!)なのだが。
>>828
今時得意げに場ゾロ数える奴ァいねぇよ
(lll゚Д゚)ガーン!
フリーで打ってて役読み上げる時は必ず数えてるよ・・・
バンバン言うやつはバカだね。
時間の無駄!

>>830
フリーでは点数だけ言えばイイのだよ。
832デフォルトの名無しさん:03/03/09 16:30
他の作ってる人は?
>>826
俺は完全に脱線していたと思うが。
ジャンケンの議論で何がしかの成果が得られたのか?
834デフォルトの名無しさん:03/03/09 20:59
>>833
ゲーム理論
戦略
835>>577=580=833:03/03/09 21:17
>>834
「ゲーム理論」という単語が出た事が成果か?
俺としては>>575が「確率」というものについて
一くさり語ってくれていたら成果が出たといっても
いいと思うが(w
836デフォルトの名無しさん:03/03/09 22:40
>>835
http://www.geocities.co.jp/WallStreet-Bull/6161/
一回のじゃんけんにつき
グーで勝つと1点
チョキで勝つと3点
パーで勝つと10点獲得する。
引き分けは両者が0点
負けも0点を獲得するとする。

この時、どういう戦略が最も強いか。
答え
最強の戦略はない。
すなわち、相手に応じた戦略をとる必要がある。

麻雀にもこれと同じ要素が含まれている。
すなわち、麻雀では相手の戦略に応じて
自分の戦略を変えるアルゴリズムが有効である事がわかる。
しかし、どの程度有効かはわからない。
ものすごく有効かもしれないし、ほとんど有効じゃないかもしれない。
でも、必ず影響はある。
単純に考えるのは結構だが、例えが単純すぎる
さっさとバーうpしやがれってんだイヤンバカン
839575:03/03/10 04:26
>>835
いや、別に語ることも無いよ
麻雀のツモとじゃんけんの手との違いを
理解してない人がいたから指摘しただけ
また脱線ですか?
841デフォルトの名無しさん:03/03/10 16:59
ルールは変えられるの?
842デフォルトの名無しさん:03/03/10 17:44
>>841
まだその段階ではないようです
843デフォルトの名無しさん:03/03/10 20:43
使えねー
844デフォルトの名無しさん:03/03/10 20:58
使えるー
>最強の戦略はない。
>すなわち、相手に応じた戦略をとる必要がある。
なぜ相手に応じる必要が?

るーぷ
NPCの戦略なら、特徴あるキャラが複数居た方が面白いんじゃないかな。
848デフォルトの名無しさん:03/03/10 22:48
バカに理解させようとする努力は無駄。
バカは自分がバカな事に気づかない。
>>848
本当だ。微塵も気付いていない。特に >>848 とか。
850デフォルトの名無しさん:03/03/10 23:00
最強の闘牌について語れや
つうかそのじゃんけんなら最善の戦略はあるじゃん・・・。
とりあえず、最善の牌を必ず手に入れられるようなアルゴリズムを作れ。
お前はまずアルゴリズムという言葉の意味を理解しろ。
854572=708:03/03/11 02:57
>>836
氏ねバカ。二度と来んな。
「面白さ」はどうでもいいんじゃないか?
856247:03/03/11 07:33
面白い方がいいに決まってる。

いや、戦略を考えるのにさ。
単純な探索の速度だけが問題になるようなのじゃ、詰まらないだろ。

>>838
いまちょっといろいろ整理してるのでしばらくお待ちください。
857デフォルトの名無しさん:03/03/11 08:04
このマージャンソフトすごいな。
半荘でおわれないばかりか、しばらくやってるとウイルスまでいれてくれる。
最強になること=楽しいことでないと駄目だ
859デフォルトの名無しさん:03/03/11 14:13
>>858
言ってることの5%しかわかりません
5%も分かってくれたなら、宇宙は君のものだ
5%=1/20ということは、>>859が分かったのは"最"あたりか
強はちょっと難しかったな。
863859:03/03/11 15:06
>>861-862
"="の意味だけわかりました。
何と何を比べてるのかは全くわかりません。

もちろん"最"なんて意味不明すぎて鼻血がでました。
最はオレの麻雀の中にいる
実は最は、もっともと読むんです。
866デフォルトの名無しさん:03/03/11 16:59
最強の話ししようぜ。
やっぱ悟空最強。
868デフォルトの名無しさん:03/03/11 17:07
今日は最強最悪のアソボット五九の日
869デフォルトの名無しさん:03/03/11 17:56
最弱の話ししようぜ。
>>871
それ以外で
最弱はヤムチャだろ。
クリリンって弱そうなイメージあるけど、
実は純粋な地球人では一番強いんだよな。
>872は天津飯派を呼んだ!
874デフォルトの名無しさん:03/03/11 18:50
>>872
純粋なって…鼻ないよ。
>>874
お前は突然変異で指が六本ある人間を地球人ではないというのか?
876デフォルトの名無しさん:03/03/11 20:02
>>875
突然変異が純粋ですか?
>>876
突然変異だろうが奇形だろうが地球人だろうが。
純粋ってなんだよ。
878デフォルトの名無しさん:03/03/11 20:56
>>877
知らねーよ!
>>872に聞け!!
クリリンより亀仙人の方が強いべさ
17・18号は純粋な地球人だと思う。
8号はフランケン
根こそぎフランケンは結構面白かった。
最後は亀より栗の方が強いような
だがサタンの娘(名前忘れた)って最後強くなかったか?
ビーデルだっけ?
あれも何気に悪魔から来てる名前だったのか
885デフォルトの名無しさん:03/03/12 10:35
君達はドラゴンボール世代ですか?
オレは怪物君世代です。あとエスパーマミ
↑キモイヨー
887デフォルトの名無しさん:03/03/12 11:37
↑アフォ発見
↓まあそういうなよ
↑うっせーぼけ
890デフォルトの名無しさん:03/03/12 13:40
>>886-889
厨房はこの板に来ないで下さい。
紳士・淑女・熟女だけ来て下さい。
正直、俺は悟飯とビーデルのラブラブ学園生活が見たかった。

初Hの話とか。

エスパー魔美再放送キボン
幼女だけ来てくらさい
>>892
パンか!?
894デフォルトの名無しさん:03/03/12 14:46
>>891
バキを読みなさい
麻雀の話はどこいった
896デフォルトの名無しさん:03/03/12 15:58
>>895
麻雀版逝け
DLLの作り方おすえて
>>897
DLL版逝け
899デフォルトの名無しさん:03/03/12 17:10
ドラゴンボール教えて
900デフォルトの名無しさん:03/03/12 17:31
>>899
ここに逝ろ
ドラゴンボウル何個集まりました?
やっとボムの炭とエクソレイの粘菌が手に入ったところです。
>>901
じっちゃんの形見とかいっているガキが四星球を放しません。
そいつらとその仲間は暴力と科学力を使って、
なんども神龍に願い事をかなえてもらっているみたいです。
欲張りすぎです。どうしたらいいですか?
904デフォルトの名無しさん:03/03/12 17:51
早く次スレの話ししようぜ

>>901
そんなもん集めなくても君の願いを叶えてやるぞ(嘘)
905デフォルトの名無しさん:03/03/12 18:51
>>903
ドラゴンボールを7個集めてシェンロンにお願いしなさい
何気に中国系のドラゴンボールと麻雀は関係あるな
関心関心
907デフォルトの名無しさん:03/03/13 09:53
また脱線ですか?
908デフォルトの名無しさん:03/03/13 10:07
あれ?ツクってるひと、もう辞めたのかな?
909デフォルトの名無しさん:03/03/13 11:14
結果だせや
910デフォルトの名無しさん:03/03/13 18:26
早く次スレの話ししようぜ
>>910 やんの?
912デフォルトの名無しさん:03/03/13 20:56
>>911
やらないの?
>>912
やってもいいが俺のレートは高いぞ
914デフォルトの名無しさん:03/03/13 22:58
>>913
12回ローンでお願いします
脱衣麻雀…
リアルで…
やりたい…
野郎同士で脱ぎあうのか?
915はギャルですよ
918デフォルトの名無しさん:03/03/14 12:51
脱衣麻雀なんてつまらないよ。
どーせなら野球拳!それか卓球拳!!
すなおにSEX
920デフォルトの名無しさん:03/03/14 18:50
早く次スレの話ししようぜ
921デフォルトの名無しさん:03/03/15 10:01
何か結果でた人いる?
おまいの言う結果って何よ?
923デフォルトの名無しさん:03/03/15 10:52
>>922
より"最強"に近づいたプログラミングが
できたかどうかじゃない?
924デフォルトの名無しさん:03/03/15 11:07
最強の麻雀プログラムは無理っぽいからすっごい簡単な麻雀プログラム作ったら無い牌捨てろっていってくるヽ(`Д´)ノウワァァン
925デフォルトの名無しさん:03/03/15 11:57
>>924
(。・д・)ァゥァゥ
ここは最強スレだ。妥協は許ぬ。
ゆるぬ。
928デフォルトの名無しさん:03/03/15 12:50
ゆるぬ
逆から読んだらぬるぽ
929デフォルトの名無しさん:03/03/15 12:58
最強の麻雀プログラム?
数百通りの上がりの形を作っとくだろ。
その中から4つ(4人分)の上がりの形を決めるだろ。
全牌数分のデータから上で決めた4つの上がりの形で使ってる牌を消去するだろ。
4つの上がりの形からいくつか牌を抜くだろ。抜いた牌は別データとしてとっとけよ。
抜いたところに使用してない牌を適当にまぶすだろ。
で、画面に表示だ。
コンピュータはツモ切りでいいだろ。
ツモは使用して無い牌から適当にランダムで持ってくるだろ。
で、そのツモの途中でランダムに上がりの形から抜いた牌をつもらせるだろ

あとは秘密。この方法でげせーんでけっこう評価よかーた。
930デフォルトの名無しさん:03/03/15 16:48
>>929
数百通り?4人分??
931デフォルトの名無しさん:03/03/15 17:07
懐かしいアルゴリズムだな…… もうちょっと簡単な方法を示すと

1.上がりの形式を数パターン用意しておく。
2.コンピュータは上がりの形式から1つづつ選んでおく
 (つまり、最初から上がっている)
3.コンピュータは何回かツモ切りをした後、「上がった」と宣言する。

例えば、レベルが低いCOMは上がるまでにかなりツモ切るし、
ぎゃわんぶらぁ自己中心派(これまだ懐かしいなぁー)の「竜巻ツモ」なんかもこれなら簡単に実現可能。

ところで、大学院の修士研究に麻雀ゲーム理論やりたかったが、そういう研究室が無かったよ…… 鬱
932デフォルトの名無しさん:03/03/15 18:10
よーするにイカサマか
盲牌の練習ソフトならできたよ
ばかばっか
今度はルリルリの話題ですか?
936デフォルトの名無しさん:03/03/15 19:52
ばか発見
ところでおまいら、洗牌のアルゴリズムはどうやるんだ?
ランダムに配列を弄っても、現実っぽい配牌にはならないんだが?
>>937
普通に
for i = start to end-1
 swap(array[i], array[random(start, end)])
的なコードで十分じゃないの?
「現実っぽい」ってのは幻想では。
>>937
鷲頭麻雀みたいにツモ一回ごとに引き直す。
940デフォルトの名無しさん:03/03/16 02:59
確かに現実だと多少の偏りはある。
(自動卓が規則的に動作してるため)
プログラムでそこまで考慮する必要があるのか?
と問われれば「ない」と大きな声で答えたい。
941デフォルトの名無しさん:03/03/16 03:14
new BouyaTetsu().tsubamegaeshi();

最強。
942デフォルトの名無しさん:03/03/16 14:29
現実っぽい灰パイって南だ?
テンホーだしたら駄目か?
943247:03/03/16 14:46
一瞬考えたけどね。
自動卓の洗牌のシムレーション。

一局終了時に、河→牌山→手牌→鳴き牌の順に並べて、
ほどほどに混ぜつつ、次々局の牌山を組む。
混ぜ具合は湿度変数で指定できるって感じで。

馬鹿らしいからやらないけど。
247って何した人?
247の書き込み見てもよく分からないんだけど
>>943
全自動卓は普通牌を2セット持つので
それもシミューレート?(笑)
面白い麻雀目指すなら、ゲ製
最強の麻雀目指すなら、ム
>>944
ろくな設計もせずに麻雀プログラムを作成しようとして、自滅しかけている奴。
最新版は>>815か?

但し、とにかく動く(?)ソースをうpしている点で
他の奴等よりも10歩ぐらい先に進んでいる事は間違いない。
948デフォルトの名無しさん:03/03/16 18:28
247は神です(嘘)
949デフォルトの名無しさん:03/03/16 21:03
車ゲーはリアルシミュレーションによって面白くなるが、
麻雀をリアルシミュレーションするとスゲー地味になる。
>>943
面白いかも
前々局の捨て牌で山の傾向が決まったりして
古い自動雀卓みたい
951デフォルトの名無しさん:03/03/16 21:59
早く次スレの話ししようぜ
>>949
> 車ゲーはリアルシミュレーションによって面白くなるが
そんなわけない。
953デフォルトの名無しさん:03/03/16 22:26
車ゲーのどこがリアルなのかと(略
954デフォルトの名無しさん:03/03/16 23:00
オレの友達は車ゲームで40km/h以上だしませんが何か?
955デフォルトの名無しさん:03/03/16 23:02
オレの友達は車ゲームで事故死しましたが何か?
>>960
告ぎすれたテロ、ぼけ
957デフォルトの名無しさん:03/03/16 23:55
また脱線ですか?
車ゲーは脱線しても壊れない。これはリアルじゃない。
959デフォルトの名無しさん:03/03/17 00:13
車ゲー中に脱糞したら臭い。これはリアルだ。
さっさと最強の麻雀つくれよボケがPart2


■ここまでのあらすじ■
前スレで中盤で、なんとか動く麻雀プログラムをうpしてきた者が現れた。
だが、そこからなかなか進展していないようだ。
最強の麻雀への道は、まだ始まったばかりなのである。

前スレ
http://pc2.2ch.net/test/read.cgi/tech/1044446158/l50
961247:03/03/17 15:33
賞品は無くなるのか?
NASAほしいよ〜
963次スレ:03/03/17 18:48
できたら、好きな大陸1つやるよ。

■ここまでのあらすじ■
4回戦までを終え、鷲巣の総資産の3分の2に当たる
約3億円を奪った。アカギは鷲巣の源泉を暴こうとする…!?

前スレ
http://pc2.2ch.net/test/read.cgi/tech/1044446158/l50
964デフォルトの名無しさん:03/03/18 00:35
( ´,_ゝ`)プッ 
965ここからはビジネス:03/03/18 01:03
>>469
いくら出せますか?
966デフォルトの名無しさん:03/03/18 10:12
>>965
20円
将棋のスレを追い越しそうな勢いだ
あそこはもう終わりだろ。
969デフォルトの名無しさん:03/03/18 13:50
今のトレンドは麻雀!
対人麻雀ゲーで
金のかわりになにをかければ面白いだろうか。
>>970
エロ動画
>>970
友情
973デフォルトの名無しさん:03/03/18 14:50
>>970
いのき
975247:03/03/18 16:07
>>971
ダウソ板で昔やってたな。点5メガとかなんかで。
976デフォルトの名無しさん:03/03/18 16:57
>>975
レート高っ!!
977デフォルトの名無しさん:03/03/19 13:40
麻雀っておもしろいよね
ジャケットを掛けたまま銀行に行ったことのない奴のセリフだな
>978
あんた、背中が煤けてるぜ
980デフォルトの名無しさん:03/03/19 21:52
誰が次スレ立てるんだ?

ちみ
( ´,_ゝ`)プッ 
誰かオレと麻雀の話ししようぜ!
なかなか良い提案だ。だが断る。
985デフォルトの名無しさん:03/03/21 13:04
>>984
断らないで、お願いします。
一生のお願い。
Gだ断る
987デフォルトの名無しさん:03/03/21 20:55
ここもクソスレになったなぁ
ゲ作板に近しいネタだとどうしても香ばしくなる罠
989デフォルトの名無しさん:03/03/22 09:45
次スレができたら、俺が作ろうかな
990
991
992
993
994
995
996
997
998
999
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。