ブックマーク / blog.kobalab.net (21)

  • LiuLian ver.1.0.0 公開 - koba::blog

    LiuLian の正式バージョン ver.1.0.0 をリリースしました。 LiuLian は Wiki ライクのCMSです。Wikiと異なり ページベースの管理ではなく、任意にディレクトリを作成して階層的にファイルを配置できる 広く使われている Markdown記法 に加えて、はてな記法 や PukiWiki記法 に似た LiuLian記法 が使える 個人用であり複数人での編集はサポートしていない*1 という特徴を持っています。 私はブログの下書きはもっぱらLiuLianで行なっています。LiuLian記法は はてな記法 より強力で、このような表組みを行うこともできます。 ヘッダ ヘッダ1 ヘッダ2 ヘッダ 1-A ヘッダ 1-B ヘッダ 2-A ヘッダ 2-B 文 左 中央 右 デフォルトは左寄せです。 また モジュール を使って スタイルシートを読み込んだり、部品化したコンテンツを

    LiuLian ver.1.0.0 公開 - koba::blog
    zu2
    zu2 2022/08/31
  • 電脳麻将改造中 - koba::blog

    4月から 電脳麻将 の次期バージョン(ver.2.0 とする予定)への改造作業を開始しています。 ネット対戦機能 ルール変更対応 不正な牌姿への対応 バリアフリー対応 が主な予定改造項目です。 ネット対戦機能 socket.io を使用してネット対戦できるようにする計画です。現在は局進行プログラムと対局者プログラムがともにブラウザ上にあり、互いにメソッド呼び出しすることで局を進行させていますが、これをサーバー側とブラウザ側に分離し、WebSocketで通信するように変更します。サーバ・クライアントモデルにすることでも多くの変更が必要ですが、それよりも面倒なのは表示方法の変更です。今までは局進行側の「神視点」*1から一部を隠して表示するという方法だったのですが、ネット対戦型の場合はそもそもブラウザ側は他の対局者の手牌情報は副露された部分しか持っていないので、そのような不完全な状態でも卓を描画

    電脳麻将改造中 - koba::blog
    zu2
    zu2 2021/06/08
  • 麻雀ルールのカスタマイズ(0) ~ ルール一覧 - koba::blog

    電脳麻将 ver.2.0 開発 における目玉の一つが パラメータによるルールのカスタマイズ である。具体的なパラメータ一覧は ルール · kobalab/majiang-core Wiki · GitHub に記した通り。これらを組み合わせてカスタマイズ可能とする。 実装予定のパラメータでどこまで各種ルールに対応可能か調べてみた。ネット麻雀代表として 天鳳、競技麻雀代表として Mリーグ、古典的ルール代表として 最高位戦Classic を例にパラメータを適用した*1。 電脳麻将のデフォルト値と異なる部分を網掛けで示す。 電脳麻将 天鳳 (ナシナシ東風戦)Mリーグ 最高位戦 Classic 配給原点 25,000 25,000 25,000 30,000 順位点 [20,10,-10,-20] [20,10,-10,-20][30,10,-10,-30][12, 4, -4,-12] 赤牌 {

    麻雀ルールのカスタマイズ(0) ~ ルール一覧 - koba::blog
    zu2
    zu2 2021/06/08
  • 天鳳鳳凰卓の牌の危険度表 - koba::blog

    現代麻雀技術論 - 押し引き論13.ベタオリ でも紹介されている有名な「牌の危険度表」の出典は『科学する麻雀』の東風荘のデータと思われるので、赤なし・クイタンなしの東風戦のケースであろう。では天鳳鳳凰卓の東南戦では?ということで実際に統計をとってみた。*1 集計対象は2019年の天鳳鳳凰卓東南戦 171,650半荘の全リーチ 1,300,316件*2。スジや見えている枚数の条件はリーチ宣言牌打牌直後。 パターン 天鳳鳳凰卓 (参考) 科学する麻雀 全ケース 和了牌のケース危険度 字牌 5,556,695 97,663 1.76% − 生牌 1,423,117 61,000 4.29% 3.4% 1枚切れ 1,554,179 32,866 2.11% 2枚切れ 1,339,748 3,719 0.28% 0.9% 3枚切れ 949,632 78 0.01% − 4枚切れ 290,019 0

    天鳳鳳凰卓の牌の危険度表 - koba::blog
    zu2
    zu2 2021/01/17
  • 電脳麻将 ver.1.5.0 公開 - koba::blog

    電脳麻将 を ver.1.5.0 にバージョンアップしました。 押し引きアルゴリズムの改善 牌譜ビューアのUIを改善 デバッグ機能の改善 が主な修正です。 押し引きアルゴリズムの改善 押し引きアルゴリズムの改善(1) - koba::blog、押し引きアルゴリズムの改善(2) - koba::blog、押し引きアルゴリズムの改善(3) - koba::blog を取り込みました。*1 牌譜ビューアのUIを改善 牌譜操作時にスクロールキーで画面がスクロールしないよう修正しました。 デバッグ機能の改善 配牌とツモを固定した デュプリケート対局 ができるようにしました。1ファイル内に複数の牌譜が存在する形式も解析できるようにしました。 *1:画像の牌譜は超好形1シャンテンから無スジの を押したところ

    電脳麻将 ver.1.5.0 公開 - koba::blog
    zu2
    zu2 2021/01/07
  • 押し引きアルゴリズムの改善(2) - koba::blog

    押し引きアルゴリズムの改善(1) - koba::blog で全ての打牌について1つ1つ押し引きを判断できるようになったので、押し引き表の牌姿は評価値何点? - koba::blog で言及した「評価値を基準とした押し引き判断」を実装する。 改善内容 現在1シャンテンでは手牌の良し悪しに関わらず 現物・字牌・スジは押す としているが、評価値を基準に手牌を 愚形、好形、超好形 の3つに分け、 愚形 ベタオリ(現在の2シャンテン同様) 好形 現物・字牌・スジは押す(現在の1シャンテンのまま) 超好形 全押し(現在のテンパイ同様) とする改善を行う。具体的には評価値400未満を愚形、400以上1200未満を好形、1200以上を超好形とした*1。押し引き表の牌姿は評価値何点? - koba::blog の牌姿と照らし合わせると、 牌姿 子の場合 親の場合 愚形 好形 超好形 愚形 好形 超好形 七

    押し引きアルゴリズムの改善(2) - koba::blog
    zu2
    zu2 2020/12/30
  • 電脳麻将のプログラム構成(0) ~ 全体編 - koba::blog

    電脳麻将 のプログラム構成について。 ver.1.0.0 より電脳麻将は、npm対応のパッケージ になっています。ソースからビルドするには Node.js と npm が必要になりました。今回はこの新しいプログラム構成について説明します。 次回リリースする ver.1.4.0 で構成を再度見直す予定なので、今回の説明も先駆けてそれに合わせています。 GitHub - kobalab/Majiang at v1.4.0 全体構成 プログラムは以下のファイルとディレクトリで構成されます。 ファイル 説明 package.json npm用構成ファイル README.md パッケージの説明 LICENSE ライセンスファイル ChangeLog.md 変更履歴 package-lock.jsonモジュール構成ファイル webpack.config.jswebpack設定ファイル www/ Web

    電脳麻将のプログラム構成(0) ~ 全体編 - koba::blog
    zu2
    zu2 2020/07/26
  • 電脳麻将のプログラム構成(1) 〜 JavaScript編 - koba::blog

    電脳麻将のプログラム構成(0) ~ 全体編 - koba::blog に続き、今回はJavaScriptのプログラム構成。 電脳麻将 の プログラム は全てJavaScriptで記述しています。プログラムは以下に分類できます。 共通モジュール 画面系モジュール ページ毎モジュール 開発用モジュール 共通モジュール ブラウザに依存しないコードだけで構成される。手牌の操作、シャンテン数計算、和了点計算、局進行、麻雀AI など。 画面系モジュール 手牌表示、麻雀卓表示、UIなどブラウザに依存したコード。 ページ毎モジュール 各ページのスタートアップルーチン。ページに閉じたロジックも含む。 開発用モジュール 試験用の局進行ドライバ。牌譜解析・統計用ツール、過去のAI(比較対戦用)など開発のためにだけ使用するモジュール。 ソースファイル一覧 src/js/ 配下の ファイル構成 は以下の通り。 ファ

    電脳麻将のプログラム構成(1) 〜 JavaScript編 - koba::blog
    zu2
    zu2 2020/07/26
  • 中国語の音節構造 - koba::blog

    中国語、発音よければ半ばよし これは中国教育者の相原茂氏の言葉です。文法は比較的簡単なのに発音が難しいのが中国語の特徴と言われています。ですが中国語の発音は日語と同様に 子音+母音 のパターンに正規化されており、音節のパターンは有限です*1。その点で音節のパターンを数え上げることができない英語などよりはよほど簡単だと私は思っています*2。 ところがこの正規化のパターンをわかりやすく説明しているテキストはあまりないようです。なので私の理解で説明を試みたいと思います。 なお、以下の説明は中国語の発音表記法であるピンインの知識が多少はあることを前提としています。 音節構造 母音 主母音 尾音 介音 子音 音節表 介音なし 介音 i 介音 u 介音 ü (付録) 注音符号 母音 子音 音節構造 日語と同様に中国語の音節は 子音+母音 で構成されます。基的に子音のみの音節はありません(例外は

    中国語の音節構造 - koba::blog
    zu2
    zu2 2020/07/04
  • 麻雀アプリに「牌操作」はあるのか? - koba::blog

    麻雀アプリのストアでの評価を見ると「牌操作がひどい」というように牌操作という言葉を聞くことがあります。ここでいう牌操作とは、 配牌が何らかの意図で偏らされている*1 局開始後にツモが意図的に変更される*2 という意味で使われているようです。 では、実際のところどうなのでしょうか? このような疑惑が出る背景は、30年以上前に麻雀ゲームが出始めたころ*3、まともな手役作りのプログラムが難しかったので、コンピュータ側を配牌時にあらかじめテンパイさせておき、適当なタイミングで和了するというインチキな実装があったという黒歴史にあるようです。しかし、天鳳などの対CPU戦のないアプリではそもそも手役作りのアルゴリズムは不要ですし、今や麻雀AIも開発されている時代です。今もこんなことが継続されているのでしょうか? 正しいプログラムとは何か 牌山生成 配牌とツモ 正しくプログラムされていることをどのように保

    麻雀アプリに「牌操作」はあるのか? - koba::blog
    zu2
    zu2 2020/06/29
  • 何切る検討(7) ~ 片アガリはダメ? - koba::blog

    麻雀 定石「何切る」301選 の Q037。 [ 東場 東家 ] 電脳麻将: 何切る解答機 の選択は打 、ウザクの回答は打 。 打 のテンパイ形と評価値は以下の通り。 有効牌枚数打牌テンパイ形 待ち 枚数評価値 待ちの形 4 8 6600.00両面 4 4 1000.00 片アガリ 2 8 5900.00両面 6 4 1000.00 片アガリ 1 8 7900.00両面 3 4 2000.00 片アガリ 3 810000.00両面 3 4 1000.00 片アガリ 3 8 4000.00両面 1 8 5900.00両面 3 4 1000.00 片アガリ 4 7 8500.00両面 4 7 1750.00両面 4 7 5600.00両面 打 の場合は以下。 有効牌枚数打牌テンパイ形 待ち 枚数評価値 待ちの形 4 8 6600.00両面 4 4 1000.00 片アガリ 3 810000.

    何切る検討(7) ~ 片アガリはダメ? - koba::blog
    zu2
    zu2 2019/10/12
  • 何切る検討(6) ~ 良形聴牌? - koba::blog

    麻雀 定石「何切る」301選 の Q022。 [ 東場 東家 ] は確定メンツなので、亜リャンメン 、リャンメントイツ 、4連形 のどれを切るかの問題。 電脳麻将: 何切る解答機 の選択はリャンメントイツから打 、ウザクの回答は亜リャンメンから打 。 どちらの選択でも索子の受けは変わらないが、索子を引いた後のテンパイ形が異なる。 打 後のテンパイ形と評価値*1*2は 有効牌枚数打牌テンパイ形 待ち 枚数評価値 待ちの形 4 4 1966.67 双碰 3 3 2000.00 嵌張 3 7 3308.33両面 2 7 3266.67両面+双碰 4 7 2633.33両面 4 4 1733.33 嵌張 1 6 4000.00両面 1 6 2833.33単騎 x2 4 4 1733.33 嵌張 4 11 3666.67両面 x2 1 4 2666.67 双碰 2 4 2200.00 双碰 3 7

    何切る検討(6) ~ 良形聴牌? - koba::blog
    zu2
    zu2 2019/10/08
  • 何切る検討(3) ~ 手変わりの考慮 - koba::blog

    麻雀 定石「何切る」301選 の Q068。 [ 東場 東家 ] 電脳麻将: 何切る解答機 の選択は打 、ウザクの回答は打 。 両面2つ待ちの1シャンテンなので、 と の選択になるが、評価値は同点。 電脳麻将は 何切る検討(0) 〜 打牌選択アルゴリズム - koba::blog の「孤立牌の評価値」にしたがい を選択。、 共に端牌だが、手牌に があるので「くっつき牌」としては の方が強いという判断だ。 一方ウザクの選択の根拠は 引きでの手変わりの考慮。今までの両面2つに加えてそのそれぞれの縦引き4種も有効牌に変わる。 手変わりをを考慮すると計算すべき局面が爆発的に増えてしまうため、現在*1の電脳麻将の評価値計算アルゴリズムでは敢えて考慮に入れていないが、検討の価値がありそうである。 *1:ver.1.3.3

    何切る検討(3) ~ 手変わりの考慮 - koba::blog
    zu2
    zu2 2019/10/07
  • 何切る検討(4) ~ 嵌八で待て! - koba::blog

    麻雀 定石「何切る」301選 の Q134。 [ 東場 東家 ] 電脳麻将: 何切る解答機 の選択は打 、ウザクの回答は打 。 6ブロック形なので弱い嵌張ターツ 、 のどちらから切ることになる。電脳麻将での評価値もこの4牌が同点。 電脳麻将は例によって同点の場合は「孤立牌の評価値」で判断するのだが、ターツ選択に孤立牌としての評価値を適用するのはおかしな話である。 ウザクは「リーチ時の待ちはカンよりカンの方が強い」として打 を選択しているが、リーチ時に限らず 天鳳統計(3) 〜 局終了時の牌の分布 - koba::blog の統計によると 8 は 7 より1.4倍以上河に捨てられている。 全ての牌は、山、河、副露、手牌のどこかにある。山にある牌はランダムに分布しているが、すでに見えている河、副露牌の枚数から手牌に使われている牌の分布を予測することができれば、残りの牌が山にいるもしくは今後

    何切る検討(4) ~ 嵌八で待て! - koba::blog
    zu2
    zu2 2019/10/07
  • 何切る検討(5) ~ 鳴きの評価 - koba::blog

    麻雀 定石「何切る」301選 の Q012。 [ 東場 東家 ] 電脳麻将: 何切る解答機 の選択は打 、ウザクの回答は打 。 両者の待ちの違いは x1 x1 と x4 だが 引きの場合も最終テンパイ形が異なるのでこれも含めて比較する。 メンゼンに限れば、打 は以下のパターンで評価値は 有効牌枚数打牌テンパイ形 待ち枚数打点評価値 1 112000 9900 312000 411700 212000 1 111700 7850 311700 4 6000 211700 2 112000 7875 111700 111700 311700 4 6000 (9900 x 1 + 7850 x 1 + 7875 x 2) / 72 = 465.28*1 打 は以下のパターンで評価値は 有効牌枚数打牌テンパイ形 待ち枚数打点評価値 4 4 7800 5200 4 7800 2 411700 78

    何切る検討(5) ~ 鳴きの評価 - koba::blog
    zu2
    zu2 2019/10/07
  • 何切る検討(2) ~ チートイとの天秤 - koba::blog

    麻雀 定石「何切る」301選 の Q038。 [ 東場 東家 ] 電脳麻将: 何切る解答機 の選択は打 、ウザクの回答は打 。 メンツ手だと2シャンテン、チートイなら1シャンテン。なので電脳麻将はメンツ手としての可能性を一切考慮していない。 一方、チートイを捨て、メンツ手だけで評価値を計算すると以下になる。 つまりウザクの選択は、チートイ狙いで同点の場合、メンツ手の評価値を使ったといえるかもしれない。これは改善として検討余地がありそうだ。

    何切る検討(2) ~ チートイとの天秤 - koba::blog
    zu2
    zu2 2019/10/03
  • 何切る検討(1) ~ 好牌先打? - koba::blog

    麻雀 定石「何切る」301選 の Q003。 [ 東場 西家 ] 電脳麻将: 何切る解答機 の選択は打 *1、ウザクの回答は打 。 と の評価値は同点。つまり余剰牌としてどちらを残すかという選択だ。 ウザクでは「危険度重視で内側の から」切る選択。好牌先打という訳だ。一方、電脳麻将は 何切る検討(0) 〜 打牌選択アルゴリズム - koba::blog の「孤立牌の評価値」にしたがい内側の を残す選択となっている。 回答不一致だった92問中、この「1シャンテンでの評価値同点の選択」のケースは28件あり、他のシャンテン数のケースも含めると34件が「評価値同点の選択」の差異だった。 では1シャンテンで評価値同点のときは常に好牌を切ればよいかというとそんな訳もなく、Q062では電脳麻将、ウザクともに を選択した。 そもそも愚形残りの1シャンテンではくっつきの素となる好牌は残すのが定石であり

    何切る検討(1) ~ 好牌先打? - koba::blog
    zu2
    zu2 2019/09/24
  • 電脳麻将 ver.1.3.0 公開 - koba::blog

    電脳麻将 を ver.1.3.0 にバージョンアップしました。 牌譜ビューアに「検討モード」を追加 HTMLの部品化のために Pug を導入 URLフラグメントで表示モードを指定できるようにした スマートフォン用表示の手牌のサイズを大きくした IEで「何切る解答機」を使おうとすると警告を出すよう修正 が主な修正です。 検討モード 牌譜ビューアに「検討モード」を追加しました。 このアイコンをクリックすると、画面の右側に「何切る解答機」同様の形式で打牌候補の評価値を表示します。IE以外*1のPCのブラウザで検討モードが起動できます。 牌譜IDがわかれば天鳳の牌譜も以下のように検討できます。 http://kobalab.net/majiang/paipu.html?tenhou-log/2011020417gm-00a9-0000-b67fcaa3.json#/1/0/3:i (ASAPINの

    電脳麻将 ver.1.3.0 公開 - koba::blog
    zu2
    zu2 2019/09/20
  • 何切る検討(0) 〜 打牌選択アルゴリズム - koba::blog

    電脳麻将 の 何切る解答機 で 麻雀 定石「何切る」301選 を解いてみた。 全301問中解答が一致したのは209問。正答率は69%。不一致の92問について検討し、可能であれば思考アルゴリズムの改善に役立てたいと思う。 打牌選択アルゴリズムは 麻雀の打牌選択アルゴリズム(4) - koba::blog 〜 麻雀の打牌選択アルゴリズム(9) - koba::blog で説明しているが、ここでもう一度おさらいしておく。 牌姿の評価値 以下のアルゴリズムで牌姿の評価値*1を計算する。 1. 牌姿が和了形(向聴数 = -1)の場合 (手牌が14枚) ツモ和了の和了打点を評価値とする。門前の場合は立直の1翻を加えるが、一発・裏ドラは考慮しない。また積み場、供託も打点には加えない。 [ 東場 南家 ] の場合、20符3翻(立直、門前清自摸和、平和)で 2700点。 2. 牌姿が打牌後の場合 (手牌が1

    何切る検討(0) 〜 打牌選択アルゴリズム - koba::blog
    zu2
    zu2 2019/08/01
  • koba::blog

    電脳麻将 ver.2.3.0 で ネット対戦 の機能を追加した。ルーム(対局待ちの状態)や対局画面にプレーヤー名(できればアイコンも)を表示しようとするとプレーヤーの登録が必要になる。電脳麻将では「ゲスト登録」と「外部認証」の2つの方法で、電脳麻将自身ではプレーヤー情報を管理せずプレーヤー名を取得しているので、この方法を説明する。 続きを読む 電脳麻将 の ver.2.3.2 でネット対戦で「持ち時間」を指定できるようにしたので、この使い方を説明します。 続きを読む 電脳麻将 ver.2.3.0 で ネット対戦 の機能を追加しましたが、麻雀サーバー の使い方を説明していませんでした。README だけでは説明が不十分と思ったので、補足記事を書くことにします。 麻雀サーバーを動作させるには Node.js と npm が必要なので、あらかじめインストール*1しておいてください。 *1:mac

    koba::blog
    zu2
    zu2 2019/08/01