mirror of
https://github.com/Xevion/contest.git
synced 2025-12-08 10:06:44 -06:00
89 lines
2.4 KiB
Java
89 lines
2.4 KiB
Java
import static java.lang.System.out;
|
|
import java.util.Scanner;
|
|
import java.util.Arrays;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
|
|
class Board {
|
|
private String[][] board;
|
|
|
|
Board(String input) {
|
|
this.board = new String[3][3];
|
|
for(int i = 0; i < 9; i++)
|
|
this.board[i / 3][i % 3] = input.substring(i, i + 1);
|
|
}
|
|
|
|
// [[A, B, C], [D, E, F], [G, H, I]]
|
|
// A B C | 0,0 1,0 2,0
|
|
// D E F | 0,1 1,1 2,1
|
|
// G H I | 0,2 1,2 2,2
|
|
|
|
public String[] vertical(int x) {
|
|
return this.board[x];
|
|
}
|
|
public String[] horizontal(int y) {
|
|
String[] vert = new String[3];
|
|
for(int x = 0; x < 3; x++)
|
|
vert[x] = this.board[x][y];
|
|
return vert;
|
|
}
|
|
|
|
public String[] diagonal(boolean rising) {
|
|
String[] diag = new String[3];
|
|
if(rising) {
|
|
for(int i = 0; i < 3; i++)
|
|
diag[i] = this.board[2 - i][2 - i];
|
|
} else {
|
|
for(int i = 0; i < 3; i++)
|
|
diag[i] = this.board[i][i];
|
|
}
|
|
return diag;
|
|
}
|
|
|
|
public boolean equal(String[] line) {
|
|
return line[0].equals(line[1]) && line[1].equals(line[2]) && !line[0].equals("*");
|
|
}
|
|
|
|
public String solve() {
|
|
// Verticals
|
|
for(int x = 0; x < 3; x++)
|
|
if(this.equal(this.vertical(x)))
|
|
return this.vertical(x)[0];
|
|
// Horizontals
|
|
for(int y = 0; y < 3; y++)
|
|
if(this.equal(this.horizontal(y)))
|
|
return this.horizontal(y)[0];
|
|
// Diagonals
|
|
if(this.equal(this.diagonal(false)))
|
|
return this.diagonal(false)[0];
|
|
if(this.equal(this.diagonal(true)))
|
|
return this.diagonal(true)[0];
|
|
|
|
// Check for incompletion
|
|
for(int x = 0; x < 3; x++) {
|
|
for(int y = 0; y < 3; y++) {
|
|
if(this.board[x][y].equals("*"))
|
|
return "INC";
|
|
}
|
|
}
|
|
|
|
// Tie
|
|
return "TIE";
|
|
}
|
|
|
|
public String toString() {
|
|
return String.format("Board(%s)", Arrays.deepToString(this.board));
|
|
}
|
|
}
|
|
|
|
class Main {
|
|
public static void main(String[] args) throws IOException {
|
|
Scanner s = new Scanner(new File("tictactoe.dat"));
|
|
s.nextLine();
|
|
while(s.hasNextLine()) {
|
|
String input = s.nextLine();
|
|
Board board = new Board(input);
|
|
out.println(board.solve());
|
|
}
|
|
}
|
|
} |