私はこの 1 年間、ポーカー ハンドの歴史を解析してきましたが、解析全般についてかなりのことを学びました。
私たちは正規表現から始めましたが、すぐに拡張が容易ではないことに気付きました。Ruby から C++ へと言語を飛ばして、最終的には変更しなければならないのはアルゴリズムであることに気づきました。
Boost::Spirit を手に取ったところ、元の速度の 10 倍以上のオーダーで速度が劇的に上昇するのがわかりました。その後、Java にスキップし、現在、antlr を使用して各サイトの文法を作成しています。これは間違いなくこれまでで最速の方法であり、「完全な」文法の観点から自分がどこに立っているかを正確に知ることができるため、非常に徹底的です。残念ながら、私はこれらの文法を扱うのに信じられないほどの時間を費やしてきました。
とにかく、当面の質問の背景については十分です-私が気付いていない「エキゾチックな」またはあまり知られていない解析手法はありますか? 私は、文法の字句解析/解析と、他の劣った正規表現/ループ方法しか知りません。
ポーカー ハンドの歴史に詳しくない方のために、構造がどのようなものかわかるように投稿します。
Full Tilt Poker Game #12037626529: Table durrrr (heads up, deep) - $500/$1000 -
Pot Limit Omaha Hi - 2:00:48 ET - 2009/05/05
Seat 1: durrrr ($196,456.50)
Seat 2: Gus Hansen ($65,499)
durrrr posts the small blind of $500
Gus Hansen posts the big blind of $1,000
The button is in seat #1
*** HOLE CARDS ***
durrrr raises to $3,000
Gus Hansen raises to $9,000
durrrr calls $6,000
*** FLOP *** [3d 4d 7d]
Gus Hansen has 15 seconds left to act
Gus Hansen checks
durrrr checks
*** TURN *** [3d 4d 7d] [Jh]
Gus Hansen checks
durrrr checks
*** RIVER *** [3d 4d 7d Jh] [Ah]
Gus Hansen has 15 seconds left to act
Gus Hansen checks
durrrr has 15 seconds left to act
123stayfree (Observer): GUS I NOW BRING U LUCK
durrrr bets $7,600
Gus Hansen has 15 seconds left to act
Gus Hansen has requested TIME
Hernandez777 (Observer): Gus has the super-duper nuts
Gus Hansen calls $7,600
Podobed45 (Observer): fluuuuuuuuuush
*** SHOW DOWN ***
durrrr shows [Kc 3s Qd As] two pair, Aces and Threes
Gus Hansen mucks
durrrr wins the pot ($33,199.50) with two pair, Aces and Threes
*** SUMMARY ***
Total pot $33,200 | Rake $0.50
Board: [3d 4d 7d Jh Ah]
Seat 1: durrrr (small blind) collected ($33,199.50)
Seat 2: Gus Hansen (big blind) mucked
情報を収集する他の方法 (スクリーンスクレイピングや dll インジェクションなど) についてはよく知っていますが、ハンド履歴を構造化データに変換する必要性がまだ残っているため、次のような情報を取得する方法のみを調べています。正規表現/文法...
何か見つからない場合は、文法を ocamllex/ocamlyacc で書き直そうと思います。
アップデート
fyi: 正規表現の速度は ~60 ハンド/秒でしたが、文法は 600 ハンド/秒を処理していました... データがすべて整理された後、ハンド全体が xml に変換されます... 20 ~ 30 の正規表現が必要です (最後のカウント) 解析したいサイトごとに....文法側の各サイトには、非常に多くのレクサー/パーサールールを備えた独自の文法があります(ただし、コードサイズはまだ小さいです)
私はドラゴンブックを持っていて、それを読んでいます-これにより、ocamllex/ocamlyacc を使用することに興味がなくなりました....ここでのゲームの名前はスピードです..