麻雀AI

 俺は最近ゲームプレイよりもゲーム観戦の方が好きだったりするんだ。たとえば「信長の野望 革新」ではデモプレイというのが可能で、プレイヤー不在のまま各勢力がAIの思考ルーチンに則って全国制覇を目指しているのだね。それに時々、神の立場(笑)でちょっかい出したりして面白く展開させたりするんだな。趣味がいい気はしないのだが面白いんだよ。そこでちょっと前に規則性のある数列の一意性についての記事のコメントで、とつのことを思い出し、やがて麻雀のことを思い出した。かつて俺が高校生だった頃、物々しい言い方だな、俺は何となく程度の心意気でソフトウェア工学に惹かれて理系に進み、その動機の一つには麻雀の人工知能を作ってみたいというのがあったんだ。それで「MJexeIO.dll」を使って何かしようとしたが当時俺はプログラミングのプの字も知らずプププランドスマブラをしていたような状態であったから、当然C++など分かるはずもなかったのであった。プログラミングというのは何か専用の環境があったりソフトウェアを必要とするものであると、思っていたのだね。しかし折に触れ、改めてMJexeIO.dllを見てみると、C++など分からんのは相変わらずなんだけど、作り程度は分かるのだった。ようするにDLLから使う関数を引っ張って来て普通にCみたいに書けばよいのだな。そう思って風邪なのに寝もせずに、ツモ切りをするサンプルコードをコピペしたり改造したりしていた。するとちゃんとツモ切りしてるじゃあないか。なるほど、じゃあ後は、対局中のあらゆる状況に対応するアルゴリズムを考えればいいだけの話だな。自分の打ち方を反映させるだけでよかろう。それができれば東風R1900程度のものはできる。これは高校卒業ぐらいの成績なので今の自分の打ち方がどれくらいなのか分からんが。リーチ入ったとか鳴きが入ったとか、決定的なことが起きた場合以外は大抵同じような考え方でしか牌を切らんので、関数にするのもそんなに難しくないんじゃないかと思うのだ。この状況だと何々は何%なので期待値がどう、というようなことはほとんど考えてない。それでもそこそこの成績は取れるよな。ただまあ取り組んではいないので楽観的なことを言っているのかもしれん。意外とこういうのをコードにするのは難しいようにも思う。Cが全く分からんのも問題だ。やる気が一番の問題だが。