2015年02月14日

12人の卓組

H. Hanani, Balanced incomplete block designs and related designs, Discrete Mathematics 11 (3) 255--369 に、12点のブロックデザインが書かれていた。

これを麻雀の卓組として扱うと、12人のプレイヤーが均等に対戦するには1人11ゲーム、合計33ゲームをプレイする必要があり、これで十分であることが示されていた。

12人のプレイヤーからなる集合を F11∪{∞} とみて、さらに F11 は乗法群 Z/10Z の要素 {0, 1, ..., 9} と体としてのゼロ ∅ とに分ける。

以下3つの図に示した卓に F11 の各元を加えれば全卓の組合せを得る。 ただし、任意の x ∈ F11 に対して ∞+x = ∞ とする。 すなわち、図では各卓を 2π/11 ずつ回転させていけば全卓の組合せを得る。

3卓を同時にプレイすることは不可能のようであるが、証明していない。 できるだけたくさんの卓を同時に進行して達成できる最短ラウンド数を求めることは今後の課題とする。



2014年06月22日

天鳳JSONの形式 (0)

天鳳の牌譜を表す JSON は 4 つのキー title, name, rule, log を持つ連想配列である。 title は 2つの文字列からなる配列であるが、深い意味はない。 name は 4人のプレイヤーの名前からなる配列だが、順番はここだけでなく常に当該場1局の東南西北の順となる。 rule は 2つのキー disp, aka を持つ連想配列で、disp は表示用なので任意の文字列でよく、aka は入っていなければ 0 である。 当然ながら log が牌譜の本体だ。 牌譜は ヘッダ4, メイン12, フッタ1 の計17個の配列を持つ単独の配列からなる配列である。

ヘッダ部の最初の配列は [局数, 本場, 供託/100点] である。 局数は [東1..北4] に [0..16) が対応する。 次の配列は開始時の持ち点の配列である。 これは供託と異なり100点単位ではなく1点単位となる。 残り2つはドラ指標牌と裏ドラ指標牌を示す。

メイン部分はプレイヤーごとにまとめられた 配牌・摸牌・打牌 の配列である。 基本的には牌を並べるだけだが、ポン・チー・カン などの行為に気をつけなければならない。 ポン・チー・大明カンは、摸牌の欄に面子ごと記述する。 牌を左から右へ並べ、ポンなら p, チーなら c, 大明カンなら m を、横にする牌に前置する。 一方、暗カン・加カンは、打牌の欄に面子ごと記述する。 面子の形は同様であるが、加カンはポンの p を k に置換して最後尾に1牌を増やし、暗カンは最後尾に a を前置する。 また、いわゆる「ポン抜け」「カン抜け」は詰めてしまう。

フッタは3要素の配列1つからなる。 1つ目は結果を表す文字列、2つ目は点数の移動を表す配列、3つ目はアガリの詳細を表す配列である。 結果は例えば「和了」などが入る。 点数の移動は局開始時の持ち点と同様である。 アガリの詳細は3つの数値は和牌者、放銃者、包責者の座位を示す3つの数値と、点数の説明を表す文字列とからなる。 点数の説明が「点」または「点∀」で終わらないとエラーになる例がある。

萬子
[11..19]
筒子
[21..29]
索子
[31..39]
字牌
[41..47]
ツモ切り
60 (打牌欄)


2014年05月23日

PAIFUN ファイルの形式 (1)

PAIFUN ファイルの形式 (0) ではわかっていなかった新しい情報がいくつかある。

  • 打牌の6バイト後にはツモ切りなら1が格納されている
  • ポン牌の6バイト後に0は上家から、1は対面から、2は下家からを表す
  • 誰から鳴いたかを示すのは取牌部と最終形との両方に付され、最終形なら面子全体に付される
  • 最終形で加槓になっていても誰から鳴いたかは残ったまま
  • 河の8バイト後には放銃なら2が、流局なら4が格納されている
  • カンで増えた手牌は副露数に対応する位置に置かれる (最も右の副露が槓子ならアガリ牌の手前、最も左の副露が槓子なら13枚目の直後)
  • 最終形で横にする牌の 0x10 バイト後に1が格納されている


2014年05月17日

PAIFUN ファイルの形式 (0)

概要

牌譜編集ソフトPAIFUN のデータを他の形式に変更することを試みる。

序論

PAIFUN というソフトウェアが、作者の Web サイト JANPARK で配布されている。 現在のバージョンが公開されたのは1997年で、Web サイトが更新されたのは2010年が最後である。 当該ソフトは麻雀界で広く利用されている [要出典] が、突然の公開終了や今後の OS アップデートへの対応などのリスクがある。 本研究では PAIFUN のデータ形式を推測し、他の形式の牌譜 [天鳳][東風荘] へ変換できるようにすることを試みる。

More...

2014年03月23日

28人の卓組 (2)

28人の卓組について進展があり、9回戦の構成で、より対称性の高いものを得ることができたので書いておくことにする。 まずは今まで端折っていた有限体 F9 の構成に触た方がよいだろう。 まず有限体 F3 は集合 {0, 1, 2} に 3 を法とした加減乗除の演算を入れてできる体である。 この2次拡大が F9 であり、具体的には次のように構成する。 F3 係数の代数方程式 x2 + 1 = 0 は F3 に解をもたない。 そこで {0, 1, 2} に i を添加し、i2 + 1 = 0 をみたすように演算を定義する。 i2 = -1 と書いた方がわかりやすいと感じる人もいるかもしれない。 すると可能な「数」は {0, 1, 2, i, i+1, i+2, 2i, 2i+1, 2i+2} となる。 簡単のため、これらを数字 0, 1, 2, 3, 4, 5, 6, 7, 8 で表すことにすると、和および積は以下のようになる:

F9 の加算
+012345678
0012345678
1120453786
2201534867
3345678012
4453786120
5534867201
6678012345
7786120453
8867201534
F9 の乗算
×012345678
0000000000
1012345678
2021687354
3036258147
4048561723
5057813462
6063174285
7075426831
8084732516

和および積の表があれば逆演算も含めてすべての計算ができる。

More...

2014年03月13日

28人の卓組 (1)

28人9回戦の卓組 (0) について、結果だけでなく構成を書くことにしよう。 構成は unital 2-(28, 4, 1) design によると書いたが、これは 2-(m3+1, m+1, 1) において m = 3 としたものである。 m が素冪なら以下が成り立つ、らしい (まだきちんと確認していない)。

まず、位数 m2 の有限体 Fm2 が存在する。 これは m の (唯一の) 素因数を p とし、多項式環 Z/pZ[x] を既約多項式の生成する極大イデアルで割って得られる。

次に、Fm2 上の射影平面 P2Fm2 を考える。 これは [x:y:z] という形をした Fm2 の要素の集合から「全成分が 0」の1点を除き、さらに「定数倍で移り合うもの同士は等しい」という同値関係で割ったものである。

28人の卓組問題は m = 3 の場合であるが、より簡単な唯一の例である m = 2 の場合を考えてみる。 まず位数4の有限体は集合としては {0, 1, ω, ω+1} で、演算は ω2 = ω+1 のようになる。 射影平面 P2F4 の要素をすべて列挙しよう。 個数は (43-1) / (4-1) = 21 で、具体的には以下のリストのようになる。 なお、これが理解できない方は「顔文字みたいで可愛い」とだけ思っていただければよい。

  • [1:1:1] = [ω:ω:ω] = [ω+1:ω+1:ω+1]
  • [1:1:ω] = [ω:ω:ω+1] = [ω+1:ω+1:1]
  • [1:ω:1] = [ω:ω+1:ω] = [ω+1:1:ω+1]
  • [ω:1:1] = [ω+1:ω:ω] = [1:ω+1:ω+1]
  • [1:1:ω+1] = [ω:ω:1] = [ω+1:ω+1:ω]
  • [1:ω+1:1] = [ω:1:ω] = [ω+1:ω:ω+1]
  • [ω+1:1:1] = [1:ω:ω] = [ω:ω+1:ω+1]
  • [1:ω:ω+1] = [ω:ω+1:1] = [ω+1:1:ω]
  • [1:ω+1:ω] = [ω:1:ω+1] = [ω+1:ω:1]
  • [1:1:0] = [ω:ω:0] = [ω+1:ω+1:0]
  • [1:0:1] = [ω:0:ω] = [ω+1:0:ω+1]
  • [0:1:1] = [0:ω:ω] = [0:ω+1:ω+1]
  • [0:1:ω] = [0:ω:ω+1] = [0:ω+1:1]
  • [1:ω:0] = [ω:ω+1:0] = [ω+1:1:0]
  • [ω:0:1] = [ω+1:0:ω] = [1:0:ω+1]
  • [1:0:ω] = [ω:0:ω+1] = [ω+1:0:1]
  • [0:ω:1] = [0:ω+1:ω] = [0:1:ω+1]
  • [ω:1:0] = [ω+1:ω:0] = [1:ω+1:0]
  • [0:0:1] = [0:0:ω] = [0:0:ω+1]
  • [0:1:0] = [0:ω:0] = [0:ω+1:0]
  • [1:0:0] = [ω:0:0] = [ω+1:0:0]

さて、射影平面 P2Fm2 の Hermitian unital とは、その部分集合であって、点 [x:y:z] が Hermitian unital の元となることの条件は xm+1+ym+1+zm+1 = 0 である。 m = 2 の場合に戻ると「3乗の和は0」ということだが、F4 の非ゼロ要素は3乗すると1になるので、xm+1+ym+1+zm+1 = 0 ⇔ x, y, z のうち奇数個が 0 である。 したがって、射影平面は unital (プレイヤー)

  • [1:1:0] = [ω:ω:0] = [ω+1:ω+1:0]
  • [1:0:1] = [ω:0:ω] = [ω+1:0:ω+1]
  • [0:1:1] = [0:ω:ω] = [0:ω+1:ω+1]
  • [0:1:ω] = [0:ω:ω+1] = [0:ω+1:1]
  • [1:ω:0] = [ω:ω+1:0] = [ω+1:1:0]
  • [ω:0:1] = [ω+1:0:ω] = [1:0:ω+1]
  • [1:0:ω] = [ω:0:ω+1] = [ω+1:0:1]
  • [0:ω:1] = [0:ω+1:ω] = [0:1:ω+1]
  • [ω:1:0] = [ω+1:ω:0] = [1:ω+1:0]

と、そうでない部分 (ゲーム)

  • [1:1:1] = [ω:ω:ω] = [ω+1:ω+1:ω+1]
  • [1:1:ω] = [ω:ω:ω+1] = [ω+1:ω+1:1]
  • [1:ω:1] = [ω:ω+1:ω] = [ω+1:1:ω+1]
  • [ω:1:1] = [ω+1:ω:ω] = [1:ω+1:ω+1]
  • [1:1:ω+1] = [ω:ω:1] = [ω+1:ω+1:ω]
  • [1:ω+1:1] = [ω:1:ω] = [ω+1:ω:ω+1]
  • [ω+1:1:1] = [1:ω:ω] = [ω:ω+1:ω+1]
  • [1:ω:ω+1] = [ω:ω+1:1] = [ω+1:1:ω]
  • [1:ω+1:ω] = [ω:1:ω+1] = [ω+1:ω:1]
  • [0:0:1] = [0:0:ω] = [0:0:ω+1]
  • [0:1:0] = [0:ω:0] = [0:ω+1:0]
  • [1:0:0] = [ω:0:0] = [ω+1:0:0]

とに分けられる。 これは9人で12ゲームの三麻を行うための卓組なのだ。

各プレイヤーが各ゲームでプレイするかどうかは、内積によって判定する。 つまり、プレイヤー [p:q:r] がゲーム [g:h:i] に参加することの必要十分条件は pg+qh+ri = 0 となる。

ここまでで unital design の部分は終わっている。 m = 2 の場合、9人で12ゲームの三麻を3卓で4回戦になるようにうまく組み合わせることが可能である。 そして、その組み合わせ方は一意で、かつ容易に求められる。

しかし28人で63ゲームの麻雀を9回戦になるようにすることができるかどうかは自明ではなかった。 そこで、グラフの彩色問題に帰着することにした。 ゲームを頂点とするグラフを作り「同時に進行できない」ことを辺で結ぶことによって表す。 グラフの頂点を彩色し、同じ色を「あるラウンドに属して同時に行われるゲーム」と解釈すると、辺によって隣接している頂点は同じ色になってはならない。 このグラフの彩色数が 9 であれば9回戦に構成可能であるということで、そうでない場合でもできるだけ彩色数を小さくしたいということである。 グラフ彩色は力任せで解くことにしたいのだが、実はグラフ彩色問題は決定問題としては NP完全であり、今のところ正確に解くには長い時間を要する。 そこでグラフ彩色問題の近似解法をいくつか実装し、頂点にランダムな並べ替えを施しながら与え、解「9彩色可能」を得ることができたというわけだ。



2014年02月26日

ダブリーツモの点数期待値

牌姿が与えられ、ダブリーしてツモのみにかけ裏は見ないとしたときの期待値を求めよという問題を Twitter で見た。 たまには算数でもやってみよう。 条件には書かれていないが、アガリ牌の選択は行わないものとする (Twitter で見た問題は、アガリ牌の選択が有利になるとは思えないものだったので、問題が曖昧であるとは言えないだろう)。 136枚のうち、第1打とするものも含めた14枚の配牌、1枚のドラ標示牌の合計15枚が見えている。 簡単のため、見えていない牌の枚数 136-15 = 121 を以下 U とする。

以下で太字の変数はベクトルを、中黒 '・' は内積を、ベクトルに前置された 'Σ' は成分の和を、C[n ; r] は二項係数を表すことにする。

何種類かのアガリ牌の残り枚数を並べたものを A とする。 一発でないアガリのとき、それぞれ対応する打点「○○オール」の「○○」を並べたものを X とする。 一発のとき、それぞれ対応する打点「○○オール」の「○○」を並べたものを Y とする。

一発役を採用していないならば Y = X とすればよい。 赤が入っていればアガリ牌の赤を別の牌として扱えばよい。 複数のアガリ牌があっても、打点が同じなら同一視することができる。

まず一発ツモのみアガり、2巡後からはツモ切りとする場合の期待値を求める。 一発目には U 枚のうち1枚をツモるので、期待値は A・3Y / U である。

次に、一発でツモれない確率、その場合にそのうちツモる確率を求める。 前者は (U-ΣA) / U である。 後者は1から「その後も全くツモれない確率」C[U-1-ΣA ; 16] / C[U-1 ; 16] を引けばよい。

ツモアガリとなったとき、その打点の確率分布はアガリ牌の枚数に対応する。 よって、一発でないアガリとなった場合の打点期待値は A・3X / ΣA である。

以上より、和牌期待値は 3(AY / U +((U-ΣA) / U)(1 - C[U-1-ΣA ; 16] / C[U-1 ; 16])(AX / ΣA)) となる。



2013年11月18日

日本プロ麻雀連盟 十段戦

Twitter から、いくつか重要と思われるツイートを引用しておく。

【十段戦速報】
7回戦成績 (トータル)
瀬戸熊 +18.9 (+24.2)
堀内 +12.0 (+14.0)
中村 ▲11.8 (▲73.2)
沢崎 ▲19.1 (+22.6)
小島 (+12.4)

Twitter: @JPML0306 2013-11-09 20:11:21

十段戦決勝8回戦東4局の私の和了が問題となり失格・公式戦休場となりました。応援してくださった皆様、関係者の皆様申し訳ありませんでした。プロ連盟はやめるつもりはありません。謹慎中によく反省してまたいつか優勝争いできるように頑張りたいと思います。

Twitter: @horihori0104 2013-11-16 15:17:21

【十段戦速報】
7回戦成績 (トータル)
瀬戸熊 +34.9 (+40.2)
中村 +7.7 (▲53.7)
沢崎 ▲4.4 (+37.3)
小島 ▲38.2 (▲25.8)

Twitter: @JPML0306 2013-11-16 17:03:01

誤解されたくありませんので補足です。私は3sをツモったときにため息をついていませんし、手三味で相手を陥れようなんて考えたこともありません。これまで何があっても純粋に麻雀の技術だけで対局に望んできました。問題の局面は勝負所で息が荒くなりツモる手に力が入ってしまいました。

Twitter: @horihori0104 2013-11-09 18:18:40

堀内氏の出場した8回戦の成績が気になる。



2013年11月17日

日本プロ麻雀連盟 十段戦

堀内プロ失格処分についてのご説明 を文字に起こした。

司会 (勝又健志)「みなさんこんにちは。勝又健志です。 本日は、第30期十段戦十段位決定戦最終日の摸様をお届けしてまいりますが、対局に入る前に重要なお知らせがございます。 藤原隆弘審判長、よろしくお願いします。」

藤原「こんにちは。審判長の藤原です。すでに、当日の生放送をご覧になってご存じの方も多いかと思いますが、第8回戦の東4局で、ある出来事がありました。 この東4局では、親の小島武夫プロが5索と東のシャンポン待ちでリーチをかけていました。 これに対し、瀬戸熊直樹プロはドラの南を勝負し、東単騎のテンパイとなりました。 その後、堀内正人プロは辺3萬をチーして、14索待ちのテンパイ。ただし、1索しか役がない、7700点のテンパイとなりました。 これに対し、瀬戸熊プロが1索を掴みましたが、瀬戸熊プロは出来面子を崩して降りました。 この1索は、瀬戸熊プロから見て4枚目の1索であったため、もし、堀内プロが123の三色でテンパイしているならば、必ず当たりになる牌でありました。 そして、あと1巡で流局というところで、堀内プロは3索をツモりましたが、その3索を軽く卓に叩き、手の内の3索を切り出しました。 映像ではここまでしか確認できませんが、実はこの時、堀内プロは、3索を困ったような表情で、首を傾げ、軽く卓に叩きつけ、手の内の3索を切りながら溜め息をついておりました。 このことは、立会人の私が、卓のすぐ近くで見ておりましたので、間違いありません。 また、一緒に戦っていた選手の皆さんも、同様の認識をしておりました。 そしてこの直後、瀬戸熊プロに、改めてテンパイが入り、瀬戸熊プロは長考しましたが、結局1索を打ってテンパイを取り、堀内プロへ7700点の放銃となりました。 以上が、私が対局場で見たことなのですが、当日ご覧になれなかった視聴者の皆さんのため、ここで、その局面のVTRをご覧いただきます。

(VTR)

藤原「はい、先ほども申し上げましたが、以上のVTRでは、堀内プロの表情や溜め息はわかりませんが、実際には、私がこの目で見ておりました。 そして、本来なら、私が対局をその場で止める権限を持っておりますので、そこでストップし、審議とするべきでした。 しかし、テレビの生放送であるということから、私は躊躇してしまい、その場でストップをすることができず、後日の審議となってしまいました。 まずは、そのことを、ファンの皆様、そして選手の皆様におわび申し上げます。申し訳ありませんでした。」

司会「そのあと、この件は、昨日開催された理事会によって審議されました。 その内容と結果については、森山茂和 日本プロ麻雀連盟会長より、ご説明させていただきます。 森山会長、お願いいたします。」

森山「はい。 十段戦2日目8回戦における堀内プロの行為について昨日緊急かやい、課題として理事会で協議いたしました。 問題の対局、堀内ぺ、堀内プロの行為と瀬戸熊プロの1索切りの映像を確認し、現場立会人である藤原審判長の『首をかしげた動作と3索を切る際の溜め息があった』と、2点の証言を報告されました。 状況は親の小島プロより東と5索待ちのリーチが入り、瀬戸熊プロはドラ南を切って勝負していましたが、親のロン牌を引かされながらも、東単騎待ちとなりました。 ここで123と三萬をチーした堀内プロの当たり牌1索を引いて、一旦は降りに回りました。 1索は親リーチの現物でありましたが、堀内プロの仕掛けに4枚目の1索であり、打てなかったと考えられます。 西家の中村プロはタンヤオ仕掛けで、1索は瀬戸熊プロが、えー、持っているのは読みやすい局面となっておりました。 えー残り山5枚となり、えー3索をツモった堀内プロの、危険牌を引いたような動作と、し、藤原審判長が指摘した首を傾げる動作と溜め息の一連の動作は、悪質極まりない三味線行為であります。 日本プロ麻雀連盟の内規に、摸範となる対局マナーを心がけるよう記されています。 また、日本プロ麻雀連盟および連盟員の名誉を傷つけた場合は会員しこ、資格を失う場合もあると記されています。 今回の堀内プロの行為は、許されざる行為であります。 日本プロ麻雀連盟理事会は、全員一致で、堀内プロの失格を決議いたしました。 当然のことながら、同じ対局者である小島武夫プロ・瀬戸熊直樹プロの2人の理事は、今回の議案について発言権・議決権ともにないものといたしました。 観戦していただいている皆様には多大なるご迷惑をおかけいたしましたことを、まことに申し訳なく思っております。 日本プロ麻雀連盟を代表いたしまして、心より深くおわび申し上げます。 えー今後、二度とこのような不祥事が起こりませんように、日本プロ麻雀連盟は厳しく対応してまいる所存でございます。 どうぞ今後とも、日本プロ麻雀連盟を応援していただけますよう、謹んでお願い申し上げます。 以上です。」

司会「はい、以上のように、今期の十段位決定戦は、堀内正人プロが失格となりました。 この後、残り4回戦を、残った4名で続けた場合、全員の試合回数にばらつきが出てしまいます。 このあたりについて、藤原審判長に、ご説明願います。」

藤原「はい。このような異例な事態になり色々な案を話し合いましたが、ベストの選択はなく、ベターを選ぶしかないという結論に達しました。 とくに、試合回数について協議した結果、最初の6回戦までは有効としました。 ここまでは5人打ちで、全員が5回ずつ打っています。 ということから、問題のあった8回戦を含む後半の2回戦、7回戦と8回戦を無効試合としました。 つまり、第6戦終了時の成績を引き継ぎ、残り5回戦を4名で打つことにしました。 これによって、ポイント的に損をする選手も出ますが、異例の事態であり、選手の皆さんには納得してもらった上で仕切り直しということになりました。」

司会「はい、というわけで、ポイントは次のようになりました: (読み上げ) 以上のようになっております。 さて、ではこのあと、対局にまいりますが、その前に、一旦お知らせをごらんください。」



2013年11月02日

28人9回戦の卓組 (0)

28プレイヤーで63ゲームを戦い完全な総当たりとする BIBD が unital 2-(28, 4, 1) design によって得られる。 これが9ラウンドに構成可能なことを発見したので結果を記録しておくことにする。 下の表において、行がプレイヤーに対応し、列がラウンドに対応する。 交差する位置の数が卓番を表す。

7卓9回戦の卓組
454541202
432352015
423105424
411623530
322530561
101254264
244025165
053612363
361402142
124463053
633424601
542416220
213360246
062221456
504132636
621046316
555053441
605315552
165640625
035566134
116111111
006000000
640631044
510504355
350265610
260156503
346344433
236233322


About

我打麻将

我打麻将の研究ノート

  • 各種ルールによって行われる麻雀の研究記録ブログです。
  • 研究課題や未知のルールは常に探しております。
  • 研究課題、未知と思われるルールを考え付いた・どこかで見た方は、e-mail またはコメントにてご連絡ください。

Sponsor

  • 当ブログの牌画は「雀のお宿」百貫雀氏によるものをフォーマット変更の上、利用しています。2次(実質3次)利用などは、氏の「雀のお宿」にて示されているガイドラインに従ってください。
Recent Comments
QR Code
QRコード
  • ライブドアブログ