読者です 読者をやめる 読者になる 読者になる

LoL/LJL好きのエンジニアのブログ

技術的な話やら、最近はLoLやLJLの話など。

AOJ 2175: Whist

問題文訳

最近日本語訳書くの面倒に感じるようになってきたし、もっとざっくりした訳にするかも。。。

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2175

ホイストは4人で遊べるトランプゲームである。 プレイヤーは東西南北と場所の名前が付けられれたテーブルを囲むように座る。 このゲームはチーム戦でる。向かい合った2人が同じチームである。 それぞれのチームは、南北チームと東西チームと呼ばれることもある。

トランプにはスートと数字がある。数字は2,3,4,...,10,J,Q,K,Aの順で、 後ろに行くほど強くなる。スートはスペード、ハート、ダイヤ、クラブである。 トランプにはそれぞれのスートにつきそれぞれの数字が1枚、合計52枚ある。

ディーラーと呼ばれるプレイヤーは、デッキをシャッフルし、 1枚づつ、自分の左のプレイヤーから時計回りにカードを裏向きにして配る。 それぞれのプレイヤーは13枚のカードを持つことになる。 配り終えたら、一番最後にディーラーのもとに配られたカードを表にする。 このカードのスートは「切り札」と呼ばれ、後に説明するように特別な意味を持つ。

このゲームは13ターンある。 より多くのターンを制したしたチームが勝利となる。 ディーラーの左のプレイヤーが最初のターンのリーダーである。 そこから時計回りにカードを1人1枚づつ出していく。 プレイヤーは、リーダーが出したカードと同じスートを出さなければならない。 もしそのスートがなければ他のスートを出してもよい。 そのターンは、リーダーと同じスートのカードのなかで、 一番強いカードを出したプレイヤーが勝利する。 しかし、切り札を出したプレイヤーがいれば、切り札で最も強いカードを出したプレイヤーが勝利する。 ターンの勝利者が、次のターンのリーダーとなり、同様にターンを進めていく。 すべてのターンが終了した後に、チームの合計勝利数が多い方のチームが勝ちである。 勝利数の合計が6を超えたぶんだけがスコアとなる。

あなたには、ゲームの過程が与えれれるので、その結果を計算するプログラムを書いて欲しい。

入力

入力はいくつかのデータセットからなる

Trump Card_N,1 ... Card_N,13 Card_E,1 ... Card_S,1 ... Card_W,1 ...

Card_N,i は、北の積に座った人がi番目に出したカードである。 Trumpは切り札である。

最初のターンのリーダーは北の人である。 また、ゲームではルールに違反するような不正なプレイはないとする。

方針

あえていうなら実装ゲーなんだけど、実装ゲーというほど実装がおおいわけじゃない。

気をつけるところは以下のところ。

  • 数字のところは 2, 3, ... ,9, T, J, Q, K, A
    • 10はTになってるので注意
    • Jは11, Qは12, Kは13, Aは14 に変換してしまうと楽
    • 切り札は数字に+15点とかにすると楽
  • チームの合計得点で勝敗が決まるんだけど、勝敗が決まった後にチームにスコアというのが与えられる。これは、6点を超えた分だけ1点与えられる。7点だったら1点、8点だったら2点
    • 日本語訳わかりにくいのはごめんちゃい。実装ゲーというより英語ゲーだ。これはきんモザ見て英語を学ぶしかない。

ソースコード