PamGau
Web周り、サッカーの話、ときどきヌコ

RubyでProject Euler - Problem 54

Problem 54 (Project Euler) [原文]

poker.txtには1000個のランダムな手札の組が含まれている. 各行は10枚のカードからなる (スペースで区切られている): 最初の5枚がプレイヤー1の手札であり, 残りの5枚がプレイヤー2の手札である. 以下のことを仮定してよい

1000回中プレイヤー1が勝つのは何回か?

問題文の引用は一部だけにとどめました。

独りポーカーなんかでは各役に以下のような得点をつけることがあります。

こうした問題で見通しをよくするにはクラスを作ってしまうことでしょう。

カード単体(Card)とカードを5枚保持する手札(Hands)とにそれぞれ相当するクラスがあれば十分です。

カード単体相当のクラスを作ると、"initialize"が使えるだけでもファイル読み込みの処理が随分楽になります。

また、5枚のカードを保持する手札相当のクラスでは"initialize"と同時に役相応の点数を計算保持するとともに、他者との勝負判定用に不等号演算子の再定義も行いました。

同役の際の勝負判定には役に関わるカードの数値が使われるので、当該数値を上記の得点の小数点以下に埋め込みます。

ちょっと処理が面倒だったのが、同役同数値の場合の勝負判定でした。役に付随するカード以外のカードの数値に基づいて判定されるので、役の点数とは別のインスタンス変数を設けました。

"poker.txt"は完全にランダムに作成されたらしく、無役の割合が多くて、高い役はありませんでした。なお、同ファイル中、"10"は"T"と1文字で表記されています


"RubyでProject Euler - Problem 53" « Home » "RubyでProject Euler - Problem 55, 56"

TrackBack

ご注意
当分の間、トラックバックの受信を行わないことといたしました。過去に戴いたトラックバックのリストについてはそのまま保持いたします。
トラックバックはありません

Comments

コメントはありません。
ご注意
当分の間、JavaScript が有効でないとコメント投稿できないようにします。スパム対策であって、投稿される方の個人情報を取得する目的ではありません。悪しからずご了承ください。
Recent Entries
京都御苑の「自転車道」
Googleの左サイドバーを消すユーザスタイルシート for Firefox , Opera
"Ruby Way"章頭の言葉
"The worst feelings in life"より
裸の英会話
RubyでProject Euler - Problem 59
RubyでProject Euler - Problem 58
RubyでProject Euler - Problem 57
RubyでProject Euler - Problem 55, 56
RubyでProject Euler - Problem 54
Links
PamGau 系
PamGau::Memo
PamGau::Dust
PamgauSigh Wiki
はてなブックマーク
パンパでガウチョ
kyorecobaのdel.icio.us
BLOGNAVI
XREA.COM
VALUE-DOMAIN
PHP ver 4.4.2
Powered by Nucleus CMS Creative Commons
feedberner banner この日記のはてなブックマーク数
BlogPeople
あわせて読みたい