luoheng
10/11/2019 - 2:32 AM

numRookCaptures


func findOnePath(board [][]byte, col, row, bcol, brow int) int {
    for i, j := col+bcol, row+brow; i >= 0 && i < len(board) && j >= 0 && j < len(board[0]); i, j = i+bcol, j+brow {
        if board[i][j] == 'p' {
            return 1
        }
        if board[i][j] == 'B' {
            break
        }
    }
    return 0
}


func numRookCaptures(board [][]byte) int {
    col, row := 0, 0
    for i := range board {
        for j := range board[0] {
            if board[i][j] == 'R' {
                col, row = i, j
                break
            }
        }
    }
    sum := 0
    sum += findOnePath(board, col, row, 1, 0)
    sum += findOnePath(board, col, row, -1, 0)
    sum += findOnePath(board, col, row, 0, 1)
    sum += findOnePath(board, col, row, 0, -1)
    return sum
}