こんな感じのメソッドを作って判定するのはいかがでしょうか。
Aなら0:0、Bなら1:0、Cなら0:1に変換して、それをさらに1, 2, 3に変換します。
lang
1public static void main(String[] args) {
2 System.out.println(f(3, 3)); // => 1
3 System.out.println(f(4, 3)); // => 2
4 System.out.println(f(3, 4)); // => 3
5 System.out.println(f(3, 6)); // => 3
6}
7
8static int f(int x, int y) {
9 int x0 = (x - 1) / 3;
10 int y0 = (y - 1) / 3;
11 if (x0 == 0 && y0 == 0)
12 return 1;
13 if (x0 == 1 && y0 == 0)
14 return 2;
15 if (x0 == 0 && y0 == 1)
16 return 3;
17 return 0;
18}
もし、D以降も同じ法則で続く場合でも対応できるようにするには、こんな感じにすればさらに汎用的になります。
lang
1static int g(int x, int y) {
2 // 範囲チェックが必要なら入れる
3 return ((y - 1) / 3) * 2 + (x - 1) / 3 + 1;
4}
退会済みユーザー
2014/11/21 21:59