Problem:
カップゲーム

3 つのカップがふせて置かれています。カップの置かれている場所を、順に A,B,C と呼ぶことにします。最初は A に置かれているカップの中にボールが隠されているとします。カップの位置を入れ替えると、中に入っているボールも一緒に移動します。

入れ替える２つのカップの位置を読み込んで、最終的にどの場所のカップにボールが隠されているかを出力するプログラムを作成してください。

Input

入れ替える２つのカップの位置が順番に複数行にわたり与えられます。各行に、入れ替える２つのカップの位置を表す文字（A, B, または C）がカンマ区切りで与えられます。

入れ替える操作は 50 回を超えません。

Output

ボールが入っているカップの場所（A, B, または C）を１行に出力します。

Sample Input

B,C
A,C
C,B
A,B
C,B

Output for the Sample Input

A

Solution in C# (judge verdict: Accepted)

using System;
using System.Linq;

public class Pg
{
    enum Cup{A,B,C}
    public static void Main()
    {
        var cup = new int[] { 1, 0, 0 };
        var cup2 = new char[] { 'A', 'B', 'C' };
        string line;
        var a = 0;
        var b = 0;
        while ((line = Console.ReadLine()) != null)
        {
            string[] swap = line.Split(',');
            if (swap[0] == "A")
            {
                a = 0;
            }
            else if (swap[0] == "B")
            {
                a = 1;
            }
            else
            {
                a = 2;
            }
            if (swap[1] == "A")
            {
                b = 0;
            }
            else if (swap[1] == "B")
            {
                b = 1;
            }
            else
            {
                b = 2;
            }
            cup = Swap(cup, a, b);
        }
        for (int i = 0; i < 3; ++i)
            if (cup[i] == 1)
            {
                Console.WriteLine(cup2[i]);
            }
    }
    private static int[] Swap(int[] a, int b, int c)
    {
        var tmp = a[b];
        a[b] = a[c];
        a[c] = tmp;
        return a;
    }
}