MCPcopy Create free account
hub / github.com/austingebauer/go-leetcode / validTicTacToe

Function validTicTacToe

valid_tic_tac_toe_state_794/solution.go:7–47  ·  view source on GitHub ↗
(board []string)

Source from the content-addressed store, hash-verified

5)
6
7func validTicTacToe(board []string) bool {
8 x := 0
9 o := 0
10 for i := 0; i < len(board); i++ {
11 for j := 0; j < len(board[i]); j++ {
12 if string(board[i][j]) == "X" {
13 x++
14 } else if string(board[i][j]) == "O" {
15 o++
16 }
17 }
18 }
19
20 oWin := 0
21 xWin := 0
22 winners := getWinner(board)
23 for _, w := range winners {
24 if w == "X" {
25 xWin++
26 } else {
27 oWin++
28 }
29 }
30
31 // x and o counts must be equal and x must be one greater than o
32 if x != o && x != o+1 {
33 return false
34 }
35
36 // if x wins, it must be on x's turn
37 if xWin == 1 && x != o+1 {
38 return false
39 }
40
41 // if o wins, it must be on o's turn
42 if oWin == 1 && x != o {
43 return false
44 }
45
46 return true
47}
48
49func getWinner(board []string) []string {
50 b := strings.Join(board, "")

Callers 1

Test_validTicTacToeFunction · 0.85

Calls 1

getWinnerFunction · 0.85

Tested by 1

Test_validTicTacToeFunction · 0.68