https://leetcode.com/problems/find-winner-on-a-tic-tac-toe-game/description/ | Easy |
---|
Дано: список ходов в игре крестики-нолики на поле 3×3. Игрок A начинает первым, затем игрок B, и они поочерёдно делают ходы. Каждый ход представлен парой координат [row, col]
.
Необходимо определить результат игры:
• Если один из игроков победил, вернуть "A"
или "B"
соответственно.
• Если все клетки заполнены и никто не победил, вернуть "Draw"
.
• Если игра ещё не завершена, вернуть "Pending"
.
class Solution {
fun tictactoe(moves: Array<IntArray>): String {
val row = Array(2) { IntArray(3) }
val col = Array(2) { IntArray(3) }
val diag = IntArray(2)
val antiDiag = IntArray(2)
for (i in moves.indices) {
val player = i % 2
val r = moves[i][0]
val c = moves[i][1]
row[player][r]++
col[player][c]++
if (r == c) diag[player]++
if (r + c == 2) antiDiag[player]++
if (row[player][r] == 3 || col[player][c] == 3 || diag[player] == 3 || antiDiag[player] == 3) {
return if (player == 0) "A" else "B"
}
}
return if (moves.size == 9) "Draw" else "Pending"
}
}