トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
ABC-054-A One Card Poker
■■■問題■■■
AliceとBobは、2人で1枚ポーカーを行います。
1枚ポーカーは、トランプを用いて行う2人ゲームです。
今回使用するトランプでは、各カードに1から13までの数が書かれています。
カードの強さは、カードに書かれている数で決まり,強さの基準は以下の通りです。
弱 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 < 11 < 12 < 13 < 1 強
1枚ポーカーは以下の手順で行います。
1. 各プレイヤーは、トランプからカードを1枚選んで、自分の手札とします。
2. 両プレイヤーは、手札を見せ合います。強いカードを持っているプレイヤーが勝ちです。
なお、両プレイヤーの持っているカードの強さが同じ場合は引き分けです。
2人の対戦を眺めていたあなたは、AliceとBobの手札を知ることができます。
Aliceが持っているカードに書かれている数はA、Bobが持っているカードカードに書かれている数はBです。
2人の代わりに、勝敗を判定するプログラムを作ってください。
■■■入力■■■
A B
●1 <= A <= 13
●1 <= B <= 13
●A,B は整数である
■■■出力■■■
Aliceが勝つならAliceを、Bobが勝つならBobを、引き分けならDrawを出力せよ。
C#のソース
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string InputPattern = "Input1";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("8 6");
//Alice
//Aliceが持っているカードに書かれている数は8
//Bobが持っているカードに書かれている数は6です。
//したがって、強いカードを持っているのはAliceなので、Aliceを出力します。
}
else if (InputPattern == "Input2") {
WillReturn.Add("1 1");
//Draw
//2人とも同じ数が書かれているカードを持っているので、引き分けです
}
else if (InputPattern == "Input3") {
WillReturn.Add("13 1");
//Bob
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
int[] wkArr = InputList[0].Split(' ').Select(X => int.Parse(X)).ToArray();
int A = wkArr[0];
int B = wkArr[1];
var wkList = new List<int>();
wkList.Add(2);
wkList.Add(3);
wkList.Add(4);
wkList.Add(5);
wkList.Add(6);
wkList.Add(7);
wkList.Add(8);
wkList.Add(9);
wkList.Add(10);
wkList.Add(11);
wkList.Add(12);
wkList.Add(13);
wkList.Add(1);
int AliceInd = wkList.IndexOf(A);
int BobInd = wkList.IndexOf(B);
if (AliceInd < BobInd) Console.WriteLine("Bob");
if (AliceInd == BobInd) Console.WriteLine("Draw");
if (AliceInd > BobInd) Console.WriteLine("Alice");
}
}
解説
ListにAddしておいて、IndexOfメソッドを使ってます。