aboutsummaryrefslogtreecommitdiff
path: root/challenge-335/deadmarshal/java/Ch2.java
blob: ef3c59fa07bcc4371a5d8b585ee340a57e03ade6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Ch2 {
  public static void main(String[] args) {
    System.out.println(find_winner(new int[][]{{0, 0}, {2, 0},
      {1, 1}, {2, 1}, {2, 2}}));
    System.out.println(find_winner(new int[][]{{0, 0}, {1, 1}, {0, 1}, {0, 2}
      , {1, 0}, {2, 0}}));
    System.out.println(find_winner(new int[][]{{0, 0}, {1, 1}, {2, 0}, {1, 0},
      {1, 2}, {2, 1}, {0, 1}, {0, 2}, {2, 2}}));
    System.out.println(find_winner(new int[][]{{0, 0}, {1, 1}}));
    System.out.println(find_winner(new int[][]{{1, 1}, {0, 0}, {2, 2}, {0, 1},
      {1, 0}, {0, 2}}));
  }

  private static String find_winner(int[][] moves) {
    int[] cnt = new int[8];
    for (int k = moves.length - 1; k >= 0; k -= 2) {
      int i = moves[k][0], j = moves[k][1];
      cnt[i]++;
      cnt[j + 3]++;
      if (i == j) cnt[6]++;
      if (i + j == 2) cnt[7]++;
      if (cnt[i] == 3 || cnt[j + 3] == 3 || cnt[6] == 3 || cnt[7] == 3)
        return k % 2 == 0 ? "A" : "B";
    }
    return moves.length == 9 ? "Draw" : "Pending";
  }
}