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 JAVA (judge verdict: Accepted)


import java.io.IOException;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) throws IOException {
		new Main().run();
	}

	private void run() throws IOException {
		Scanner scanner = new Scanner(System.in);
		while (true) {
			int a = scanner.nextInt();
			if (a == 0)
				break;
			int[] map = new int[5];
			boolean[] b = new boolean[4];
			map[0] = a;
			for (int i = 1; i < 5; i++) {
				map[i] = scanner.nextInt();
			}
			for (int aa : map) {
				b[aa] = true;
			}
			int sum = 0;
			for (int i = 1; i < 4; i++) {
				if (b[i])
					sum++;
			}
			if (sum == 3 || sum == 1)
				for (int i = 0; i < 5; i++)
					System.out.println(3);
			else if (!b[1]) {
				for (int i = 0; i < 5; i++) {
					if (map[i] == 2)
						System.out.println(1);
					else
						System.out.println(2);
				}
			} else if (!b[2]) {
				for (int i = 0; i < 5; i++) {
					if (map[i] == 3)
						System.out.println(1);
					else
						System.out.println(2);
				}
			} else {
				for (int i = 0; i < 5; i++) {
					if (map[i] == 1)
						System.out.println(1);
					else
						System.out.println(2);
				}
			}
		}
	}
}