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

麻雀 傑作「何切る」300選 からの出題。*1

ドラ __s3____
m1m2m3p1p2p3p4p7p8p9s3s3s8 s8

から何を切るか?

p1p4 でテンパイだが、三色、一通の可能性を残し、打 s3 でテンパイとらずが正解のようだ。今回はこのシャンテン戻しについて検討する。

*1:すでに続編の 麻雀 定石「何切る」301選 が出ているが、中国では手に入らぬ😢

続きを読む

L2TP/IPsec VPNサーバの構築

VPNサーバの構築 - koba::blog で構築した PPTP VPN サーバを長いこと使っていたのだが、最近のOSでは PPTP VPN がサポートされなくなってきている*1ので、L2TP/IPsec VPN サーバを構築することにした。

PPTP VPNCentOS 5 上に構築していたのだが、すでに yum のサポートも停止しているのでまず CentOS 7 にアップグレードした。

CentOS 7 の場合、

に完全なスクリプトがあるが、人の書いたスクリプトを信用してroot権限で実行するのもよろしくないので、1つ1つ理解しながら手作業で実行する。

*1:iOS 10 とか macOS Sierraとか

続きを読む

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

麻雀の打牌選択アルゴリズム(3) - koba::blog麻雀の副露判断アルゴリズム(4) - koba::blog までである程度の手作りはできるようになったが、和了打点を意識した手作りができていない。例えば

ドラ __s9____
m1m2m3m7m8p1p2p3s1s3s4s8s8 m6

でテンパイした場合、

  • s1 : s2 s5 待ち(両面8枚)の平和 (30符1翻)
  • s4 : s2 待ち(嵌張4枚)の三色、ドラ1 (40符3翻)

となり、打 s4 が有利だが、現在のアルゴリズムは待ちの多さで評価するため s1 を打ってしまう。

続きを読む

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

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

私のソースコードを読んでくれているのは中国人が多いようなのだが、それは彼らにとってコメントなし*2でもプログラムが読みやすいからではないかと思う。このままでは日本人プログラマに不公平(?)なので今回は識別子の中国語を説明する。

*1:日本語には同音異義語が多すぎるのが原因と思う

*2:私はコメントが嫌いなのでほとんど入れない

続きを読む

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

天鳳の牌譜形式を解析する(1) - koba::blog の続き。前回は天鳳の牌譜形式のXML要素・属性の意味を説明したので、今回はそれを解析するプログラムについて。

「牌番号」「面子コード」は複数の要素で使われているが、これを 麻雀の手牌の文字列表現 - koba::blog の形式に変換する。

続きを読む

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

天鳳の牌譜は http://tenhou.net/0/log/ から取得することができる。第五期 天鳳名人戦 最終節 最終戦 であれば以下のURLになる。

形式はXMLっぽいが、要素名自体がデータになっていたり入れ子構造がなかったりでXMLの特性を生かしているとは言いがたい。何よりぱっと見て対局内容を想像することができない。天鳳の牌譜で麻雀研究をしようとする場合、この複雑怪奇な牌譜形式が大きな障害になっていると思う*1。そこで天鳳の牌譜を電脳麻将牌譜形式に変換するプログラムをPerlで作ってみた。

*1:意図的に分かりにくくしているフシもあるが

続きを読む

電脳麻将 ver.0.8 公開

f:id:xlc:20161231113612p:plain:w240:right

電脳麻将 を ver.0.8 にバージョンアップしました。

牌譜エディタの公開を目標にしていましたが、まだ当分かかりそうなので、まずは「牌譜ビューア」として公開します。

具体的な修正は以下の通りです。

  • 牌譜ビューアを追加
  • 牌譜再生の際に手牌表示のON/OFF、ツモ切り表示のON/OFFを選べるようにした
  • 牌譜再生の際に視点を選べるようにした(牌譜ビューアのみの実装)
  • 牌譜再生の際に集計表をいつでも表示できるようにし、そこから局を選択できるようにした
  • ゲームの結果を10局分ブラウザに保存するようにした
  • ゲームの結果を牌譜としてダウンロードできるようにした
続きを読む