トップページに戻る    次の競技プログラミングの問題へ    前の競技プログラミングの問題へ

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メソッドを使ってます。