koba::blog

小林聡: プログラマです

麻雀

何切る検討(0) 〜 打牌選択アルゴリズム

電脳麻将 の 何切る解答機 で 麻雀 定石「何切る」301選 を解いてみた。全301問中解答が一致したのは209問。正答率は69%。不一致の92問について検討し、可能であれば思考アルゴリズムの改善に役立てたいと思う。打牌選択アルゴリズムは 麻雀の打牌選択アル…

電脳麻将 ver.1.1.0 公開

電脳麻将 を ver.1.1.0 にバージョンアップしました。 「何切る解答機」のページを追加 webpack4に対応 AIの牌姿評価結果を一覧表示する 何切る解答機 のページを追加しました。牌姿は 麻雀の手牌の文字列表現 - koba::blog の形式で入力できます。IEでも動…

電脳麻将 ver.1.0.0 公開

電脳麻将 を ver.1.0.0 にバージョンアップしました。npm対応のパッケージになったので、ソースからビルドするには Node.js と npm が必要です。機能面では以下を変更しています。 画面表示/UIを改善 ネット上の牌譜を読み込む機能を追加 天鳳形式の牌姿文字…

天鳳統計(5) 〜 巡目ごとの副露数・副露時向聴数

天鳳統計(4) 〜 待ち牌の分布 - koba::blog の続き。今回は巡目ごとの副露数と副露時の向聴数を集計した。「巡目」は以前と同様にポンにより飛ばされたツモ番は考慮せず、打牌した牌数から決めている。対象データは 2016年の「鳳凰卓 東南戦 赤あり」の 159,…

天鳳統計(4) 〜 待ち牌の分布

天鳳統計(3) 〜 局終了時の牌の分布 - koba::blog の続き。今回はリーチとダマテンについて待ち牌の分布を集計した。待ち牌はフリテンの場合も含んでいる。ダマテンは待ちが変わる場合が多いので、和了時の牌姿に限り待ち牌を集計した。対象データは 2016年…

天鳳統計(3) 〜 局終了時の牌の分布

天鳳統計(2) 〜 巡目ごとの向聴数・立直率・和了率 - koba::blog の続き。今回は局終了時にそれぞれの牌が手牌、副露面子、河、山のいずれにあったかを集計した*1。対象データは同じく 2016年の「鳳凰卓 東南戦 赤あり」の 159,798半荘。 *1:暗槓は副露、放…

天鳳統計(2) 〜 巡目ごとの向聴数・立直率・和了率

天鳳統計(1) 〜 基礎情報と和了役・流局理由 - koba::blog の続き。今回は巡目ごとの向聴数、立直率、和了率を集計してみた。対象データはやはり同じく 2016年の「鳳凰卓 東南戦 赤あり」の 159,798半荘。

天鳳統計(1) 〜 基礎情報と和了役・流局理由

天鳳の牌譜形式を解析する(4) - koba::blog で作成した天鳳牌譜変換ツールを使って天鳳の牌譜を電脳麻将の牌譜形式に変換し、統計を取ってみた。対象としたのは 2016年の「鳳凰卓 東南戦 赤あり」の 159,798半荘。

向聴数を求めるプログラム(修正版)

麻雀の副露判断アルゴリズム(2) - koba::blog で「特定の役への向聴数」を計算する方法を導入したが、バグがあるようである。例えば下記の2つの牌姿の(索子の)混一色への向聴数は 2向聴 3向聴 であるが、ともに2面子2搭子のため、同一の向聴数と判定してしま…

電脳麻将 ver.0.9 公開

電脳麻将 を ver.0.9 にバージョンアップしました。 AIが打点を意識した手作りをするようにした ゲーム進行速度調整の方式を変更 牌画入力ツールが \ で次の1文字をエスケープできるようにした 牌譜ビューアが三家和を正しく表示できるようにした 天鳳牌譜変…

麻雀の打牌選択アルゴリズム(9)

麻雀の打牌選択アルゴリズム(4) - koba::blog から 麻雀の副露判断アルゴリズム(5) - koba::blog まで打牌選択と副露判断に打点を考慮するよう改良してきたが、今回で最終回。一色手を狙わせてみる。前回のアルゴリズムで1000半荘対局させると一色手(混一色…

麻雀の副露判断アルゴリズム(5)

麻雀の打牌選択アルゴリズム(8) - koba::blog までのアルゴリズムで打牌の選択に打点を考慮した評価値*1を使用するよう修正したが、今回はその評価値を副露判断にも使用するよう改良する。副露判断に評価値を使用することで以下の効果が期待できる。 シャン…

麻雀の打牌選択アルゴリズム(8)

ドラ から何を切るか?*1候補となるのは、打 (待ち 16枚)、打 (待ち 16枚)。麻雀の副露判断アルゴリズム(4) - koba::blog までのアルゴリズムでは がポンできることを重視し だが、麻雀の打牌選択アルゴリズム(7) - koba::blog のアルゴリズムは2向聴以降は…

麻雀の打牌選択アルゴリズム(7)

麻雀の打牌選択アルゴリズム(6) - koba::blog でシャンテン戻しを仮実装したが、問題が残っている。 のテンパイから を切って1向聴に戻してしまう。また の国士無双テンパイからも をツモ切りしてしまう。今回はこの問題を修正する。

麻雀の打牌選択アルゴリズム(6)

麻雀 傑作「何切る」300選 からの出題。*1ドラ から何を切るか?打 か でテンパイだが、三色、一通の可能性を残し、打 でテンパイとらずが正解のようだ。今回はこのシャンテン戻しについて検討する。 *1:すでに続編の 麻雀 定石「何切る」301選 が出ているが…

麻雀の打牌選択アルゴリズム(5)

麻雀の打牌選択アルゴリズム(4) - koba::blog で説明したアルゴリズムを実装していく。

麻雀の打牌選択アルゴリズム(4)

麻雀の打牌選択アルゴリズム(3) - koba::blog、麻雀の副露判断アルゴリズム(4) - koba::blog までである程度の手作りはできるようになったが、和了打点を意識した手作りができていない。例えばドラ でテンパイした場合、 打 : 待ち(両面8枚)の平和 (30符1翻)…

電脳麻将のプログラム中の中国語一覧

電脳麻将のプログラムでは変数名など識別子に中国語を使用している。私に限らず日本人はプログラム中の識別子に日本語を使うのを嫌う*1が、かといって麻雀用語の英語など知らないので中国語を採用した訳だ。私のソースコードを読んでくれているのは中国人が…

天鳳の牌譜形式を解析する(4)

天鳳の牌譜形式を解析する(3) - koba::blog のプログラムにバグがあったので修正する。今までのプログラムは天鳳のログをそのままの順序で電脳麻将の形式に変換していたが、これだとカンの表示に不具合があった。

天鳳の牌譜形式を解析する(3)

天鳳の牌譜形式を解析する(1) - koba::blog、天鳳の牌譜形式を解析する(2) - koba::blog の続き。天鳳の牌譜形式のXML要素を1つ1つ電脳麻将の牌譜形式に変換していく。

天鳳の牌譜形式を解析する(2)

天鳳の牌譜形式を解析する(1) - koba::blog の続き。前回は天鳳の牌譜形式のXML要素・属性の意味を説明したので、今回はそれを解析するプログラムについて。「牌番号」「面子コード」は複数の要素で使われているが、これを 麻雀の手牌の文字列表現 - koba::b…

天鳳の牌譜形式を解析する(1)

天鳳の牌譜は http://tenhou.net/0/log/ から取得することができる。第五期 天鳳名人戦 最終節 最終戦 であれば以下のURLになる。 http://tenhou.net/0/log/?2016031822gm-0009-10011-896da481 形式はXMLっぽいが、要素名自体がデータになっていたり入れ子構…

電脳麻将 ver.0.8 公開

電脳麻将 を ver.0.8 にバージョンアップしました。牌譜エディタの公開を目標にしていましたが、まだ当分かかりそうなので、まずは「牌譜ビューア」として公開します。具体的な修正は以下の通りです。 牌譜ビューアを追加 牌譜再生の際に手牌表示のON/OFF、…

電脳麻将 ver.0.7 公開

電脳麻将 を ver.0.7 にバージョンアップしました。 音声出力の方法を修正 スマートフォンの「ホーム画面に追加」の際のアイコンを指定した チー、ポンなどの発声にキャプションをつけるようにした 画像ダウンロード中に "Loading" の文字を表示するようにし…

牌画入力ツール

麻雀の牌姿を入力する「牌画入力ツール」はネット上にいろいろある*1 *2が、どれも画面上で牌をクリックして作成する仕様なので大変面倒くさい。そこで簡単な記法を牌画に変換するツールを作ってみた。 電脳麻将: 牌画入力 このような記述ができます。 {s067…

麻雀の副露判断アルゴリズム(4)

麻雀の副露判断アルゴリズム(3) - koba::blog で喰い仕掛けで手を完成させることができるようになったが、打牌を見ていると無駄がありそうである。例えばの場合、打 は 、、、、、 の6種20枚待ち、打 だとそれに加えて 3枚も待ちになるが、 の面子が完成する…

麻雀の副露判断アルゴリズム(3)

麻雀の副露判断アルゴリズム(2) - koba::blog で役ありの向聴数が計算できるようになったので、基本的には向聴数が減る場合に鳴けばよいのであるが、実際に動かしてみると以下の問題があった。 オリている最中でも鳴いて手詰まりを起こしてしまう オリている…

麻雀の副露判断アルゴリズム(2)

麻雀の副露判断アルゴリズム(1) - koba::blog で準備ができたので、今回は特定の役に対する向聴数計算ルーチンを実装していく。日本の麻雀では以下の役について向聴数が計算できればすべての喰い仕掛けがカバーできる。 翻牌*1 断幺九 対々和*2 混一色*3 混…

麻雀の副露判断アルゴリズム(1)

電脳麻将 ver.0.6 では喰い仕掛けを実装した。基本的に向聴数が減るように鳴いていけばいずれ聴牌する*1のであるが、やみくもに鳴くと役なし聴牌となり和了できない状態になってしまう。実は以前から向聴数の減るときに鳴くという処理は実装済みなのだが封印…

電脳麻将 ver.0.6 公開

電脳麻将 を ver.0.6 にバージョンアップしました。今回のバージョンアップでは AIが喰い仕掛けで手作りできる ようになりました。これでようやく麻雀ゲームとしては一人前になりました。ver.0.7 ではAIの改良は一旦中断し、牌譜エディタの機能を追加しよう…