Go•find-winner-on-a-tic-tac-toe-game/solution.go
package main
func tictactoe(moves [][]int) string {
board := [3][3]int{}
for index, move := range moves {
if index%2 == 0 {
board[move[0]][move[1]] = 1
} else {
board[move[0]][move[1]] = -1
}
}
for index := 0; index < 3; index++ {
row, column := 0, 0
for offset := 0; offset < 3; offset++ {
row += board[index][offset]
column += board[offset][index]
}
if row == 3 || column == 3 {
return "A"
}
if row == -3 || column == -3 {
return "B"
}
}
first, second := board[0][0]+board[1][1]+board[2][2], board[0][2]+board[1][1]+board[2][0]
if first == 3 || second == 3 {
return "A"
}
if first == -3 || second == -3 {
return "B"
}
if len(moves) == 9 {
return "Draw"
}
return "Pending"
}
Python•find-winner-on-a-tic-tac-toe-game/solution.py
class Solution:
def tictactoe(self, moves: list[list[int]]) -> str:
board = [[class="syntax-number">0] * class="syntax-number">3 for _ in range(class="syntax-number">3)]
for index, (row, column) in enumerate(moves): board[row][column] = class="syntax-number">1 if index % class="syntax-number">2 == class="syntax-number">0 else -class="syntax-number">1
lines = board + [list(column) for column in zip(*board)] + [[board[i][i] for i in range(class="syntax-number">3)], [board[i][class="syntax-number">2 - i] for i in range(class="syntax-number">3)]]
for line in lines:
if sum(line) == class="syntax-number">3: return class="syntax-string">"A"
if sum(line) == -class="syntax-number">3: return class="syntax-string">"B"
return class="syntax-string">"Draw" if len(moves) == class="syntax-number">9 else class="syntax-string">"Pending"
TypeScript•find-winner-on-a-tic-tac-toe-game/solution.ts
function tictactoe(moves: number[][]): string {
const board = Array.from({ length: class="syntax-number">3 }, () => new Array<number>(class="syntax-number">3).fill(class="syntax-number">0)); moves.forEach(([row, column], index) => { board[row][column] = index % class="syntax-number">2 === class="syntax-number">0 ? class="syntax-number">1 : -class="syntax-number">1; });
const lines = [...board, ...[class="syntax-number">0, class="syntax-number">1, class="syntax-number">2].map((column) => board.map((row) => row[column])), [board[class="syntax-number">0][class="syntax-number">0], board[class="syntax-number">1][class="syntax-number">1], board[class="syntax-number">2][class="syntax-number">2]], [board[class="syntax-number">0][class="syntax-number">2], board[class="syntax-number">1][class="syntax-number">1], board[class="syntax-number">2][class="syntax-number">0]]];
for (const line of lines) { const sum = line.reduce((total, value) => total + value, class="syntax-number">0); if (sum === class="syntax-number">3) return class="syntax-string">"A"; if (sum === -class="syntax-number">3) return class="syntax-string">"B"; }
return moves.length === class="syntax-number">9 ? class="syntax-string">"Draw" : class="syntax-string">"Pending";
}