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

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

  1. m2p9z7s2s3s5s5 z1z1-z1 s8s9s7- 2向聴
  2. m2m8p9s2s3s5s5 z1z1-z1 s8s9s7- 3向聴

であるが、ともに2面子2搭子のため、同一の向聴数と判定してしまう。

続きを読む

CentOSへ最新のNode.jsをインストールする

CentOSにソフトウェアをインストールするのには yum を使うのが一般的です。Node.js も EPEL からインストールできる*1のですが、

$ yum info nodejs

で確認すると安定バージョン(現段階では v6.11.x)がインストールされるようです。開発環境では v8.4.x を使用しているので、以下を参照し、最新版をインストールします。

*1:さくらVPSCentOS 7 はデフォルトで EPEL を参照するのでリポジトリの指定は不要

続きを読む

フロントエンド開発の環境構築

電脳麻将HTML5 + CSS3 + JavaScript で動作するフロントエンドのWebアプリです。サーバ側にコードはありません。ですので今までは Node.js を使わずに開発していました。思考アルゴリズムの検証でAI同士に自動対戦をさせる場合もブラウザ上で実行していたのですが、1000半荘の対戦に8時間以上かかるようになり、さすがにブラウザ上での実行は厳しくなってきました*1

そこで Node.js を導入することにします。せっかく導入するのですから以下の方針とします。

*1:ブラウザ上で実行する場合、ブラウザが画面の前面に出ていないと実行がスリープしてしまうので長時間の試験がやりにくい。と思っていたのですが、実はヘッドレスChromeで解決できそうです。ですが今後のことを考え、この機会にNode.js化します

続きを読む

電脳麻将 ver.0.9 公開

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

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

  • AIが打点を意識した手作りをするようにした
  • ゲーム進行速度調整の方式を変更
  • 牌画入力ツールが \ で次の1文字をエスケープできるようにした
  • 牌譜ビューアが三家和を正しく表示できるようにした
  • 天鳳牌譜変換ツールを提供

このところ、麻雀AIが打点を意識した手作りができるように改良を続けていましたが、その成果を取り入れました。

続きを読む

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

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

前回のアルゴリズムで1000半荘対局させると一色手(混一色清一色)の出現率が 1.5% なのであるが、天鳳鳳凰卓の一色手出現率は 4.8% であり、かなり差がある。一色手を狙う場合は序盤に孤立字牌を残す打ち方をするべきなので、麻雀の打牌選択アルゴリズム(3) - koba::blog で導入した孤立牌の評価値に手を加えてみる。

続きを読む

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

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

副露判断に評価値を使用することで以下の効果が期待できる。

  • シャンテン戻しや向聴数の変わらない鳴きが可能になる
  • 打点が極端に下がる鳴きをしなくなる

*1:期待値のような物であるが確率を使用していないので「評価値」としている

続きを読む

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

ドラ __m1____
m6m6m6m7m8p3p4s3s0s7s7z7z7 m9

から何を切るか?*1

候補となるのは、打 s3 (待ち p2 p5 s6 s7 z7 16枚)、打 s7 (待ち p2 p5 s4 s6 16枚)。麻雀の副露判断アルゴリズム(4) - koba::blog までのアルゴリズムでは z7 がポンできることを重視し s3 だが、麻雀の打牌選択アルゴリズム(7) - koba::blogアルゴリズムは2向聴以降は鳴きを考慮しないため s7 を選択してしまう。

今回は2向聴以降も鳴きを考慮できるよう改良する。

続きを読む

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

麻雀の打牌選択アルゴリズム(6) - koba::blog でシャンテン戻しを仮実装したが、問題が残っている。

m4m5m6m6p5p8p8p9p9p9s4s0s6 m3
のテンパイから m6 を切って1向聴に戻してしまう。また
m1m2p1p9s1s9z1z2z3z4z5z6z7 m1
国士無双テンパイからも m1 をツモ切りしてしまう。今回はこの問題を修正する。

続きを読む

麻雀の打牌選択アルゴリズム(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とか

続きを読む