Mock-5

Video Solution

Solution

A smaller solution is possible if we only look at a \(3 \times 3\) board. The following solution ended up being this long because we have considered a general \(n \times n\) tic-tac-toe board.

def row_pattern(board, r):
    return board[r]
    
def col_pattern(board, c):
    L = [ ]
    for i in range(len(board)):
        L.append(board[i][c])
    return L
            
def main_diag_pattern(board):
    L = [ ]
    for i in range(len(board)):
        L.append(board[i][i])
    return L
    
def anti_diag_pattern(board):
    L = [ ]
    for i in range(len(board)):
        L.append(board[i][-i-1])
    return L

def tic_tac_toe(board):
    patterns = [ ]
    for i in range(len(board)):
        patterns.append(row_pattern(board, i))
        patterns.append(col_pattern(board, i))
    patterns.append(main_diag_pattern(board))
    patterns.append(anti_diag_pattern(board))
        
    for pattern in patterns:
        if pattern == ['X'] * len(board):
            return 'X'
        elif pattern == ['O'] * len(board):
            return 'O'
    return -1