Problem:
じゃんけん

仲良し 5 人組でじゃんけんをすることになりました。じゃんけんとは、グー、チョキ、パーという 3つの手があり、グーとチョキの勝負ならグーが「勝ち」・チョキが「負け」、チョキとパーなら、チョキが「勝ち」・パーが「負け」、パーとグーならパーが「勝ち」・グーが「負け」というルールです。全員が同じ手、またはグー、チョキ、パー全てが出た場合は「あいこ」となります。

5 人のじゃんけんの手を入力とし、それぞれの人の勝敗を出力するプログラムを作成してください。じゃんけんの手は、グーは 1、チョキは 2、パーは 3 の数字で表します。勝敗は「勝ち」を 1、「負け」を 2、「あいこ」を 3 の数字で表し、入力順に従って出力します。

Input

複数のデータセットの並びが入力として与えられます。入力の終わりはゼロひとつの行で示されます。
各データセットは以下の形式で与えられます。

h1
h2
h3
h4
h5

i 行目に i 人目の手 hi (1, 2 または 3) が与えられます。

データセットの数は 200 を超えません。

Output

入力データセットごとに、5 人の勝敗を出力します。i 行目に i 人目の勝敗(1, 2 または 3) を出力してください。

Sample Input

1
2
3
2
1
1
2
2
2
1
0

Output for the Sample Input

3
3
3
3
3
1
2
2
2
1

Solution in C# (judge verdict: Wrong Answer)

using System;
 
namespace aizu
{
    class OnlineJudge
    {
        static void Main()
        {
            bool[] mem = null;
            Action<int,int> judge = (p1, p2) => Console.WriteLine(mem[p1] & mem[p2] ? 3 : mem[p1] ? 1 : 2);
            Action[] judge2 = new Action[] { () => judge(1, 2), () => judge(2, 0), () => judge(0, 1) };
            string input;
            while((input = Console.ReadLine()) != null && input != "0") {
                int[] hand = new int[5];
                mem = new bool[3];
                hand[0] = int.Parse(input);
                for(int i=1; i < 5; ++i) {
                    hand[i] = int.Parse(Console.ReadLine());
                    mem[hand[i] - 1] = true;
                }
                for(int i=0; i < 5; ++i) {
                    judge2[hand[i] - 1]();
                }
            }
        }
    }
}