Problema
A 3×3 board is given as three strings of X, O and . (empty). A player wins with three of their marks in a row, column or diagonal. Boards never have two winners.
Implement tic_tac_toe_winner(board).
Input
board: Three rows of three characters each.
Output
Return "X" or "O" for the winner, "Draw" if the board is full with no winner, or "Pending" if empty cells remain and nobody has won.
Restrições
board has exactly 3 rows of length 3
Exemplos
Entrada:
board = ["XOX", ".X.", "O.X"]
Saída esperada:
expected = "X"
Entrada:
std::vector<std::string> board = {"XOX", ".X.", "O.X"};
Saída esperada:
std::string expected = "X";
Entrada:
string[] board = new string[] {"XOX", ".X.", "O.X"};
Saída esperada:
string expected = "X";
Explicação
X holds the diagonal from top-left to bottom-right, so X wins.
Entrada:
board = ["XOX", "XOO", "OXX"]
Saída esperada:
expected = "Draw"
Entrada:
std::vector<std::string> board = {"XOX", "XOO", "OXX"};
Saída esperada:
std::string expected = "Draw";
Entrada:
string[] board = new string[] {"XOX", "XOO", "OXX"};
Saída esperada:
string expected = "Draw";
Explicação
The board is full and no line has three of a kind: Draw.
Como abordar
Tente sozinho primeiro e depois abra uma dica de cada vez.
Dica 1
Verifique cada linha, coluna e as duas diagonais em busca de três marcas iguais e não vazias.
Dica 2
Acompanhe se ainda existem células vazias enquanto percorre o tabuleiro uma vez.
Dica 3
Lembre que um tabuleiro cheio sem vencedor é empate; caso contrário, está pendente.
Complexidade esperada
tempo O(1), espaço extra O(1)
Referências
Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.