Disponible coche capturas

Disponible retén 999. coche

En un tablero de 8 x 8, hay un coche blanco (torre). También puede ser caja disponible, elefante blanco (obispo) y el peón negro (peón). Se les da el carácter "R", "", 'B' y 'p'. Los caracteres en mayúscula indican blanca, se representan los caracteres en minúsculas negras.

El coche se mueve en la regla de ajedrez: elegir una de las cuatro direcciones básicas (Norte, Este, Oeste y Sur), y luego se mueven en esa dirección hasta que se elija a tope, o llegan al borde del tablero para mover a la misma plaza captura y muerte de los cuadrados de colores opuestos. Además, el coche no puede ser amigable con el otro (blanco) al igual que en la misma caja.

Devuelve el número de la muerte en un coche para ser capaz de captar el movimiento.

Ejemplo 1:

输入:[[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".","R",".",".",".","p"],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."]]
输出:3
解释:
在本例中,车能够捕获所有的卒。

Ejemplo 2:

输入:[[".",".",".",".",".",".",".","."],[".","p","p","p","p","p",".","."],[".","p","p","B","p","p",".","."],[".","p","B","R","B","p",".","."],[".","p","p","B","p","p",".","."],[".","p","p","p","p","p",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."]]
输出:0
解释:
象阻止了车捕获任何卒。

Ejemplo 3:

输入:[[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".","p",".",".",".","."],["p","p",".","R",".","p","B","."],[".",".",".",".",".",".",".","."],[".",".",".","B",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".",".",".",".",".","."]]
输出:3
解释: 
车可以捕获位置 b5,d6 和 f5 的卒。
#获取到车的位置,直接在4个方向进行遍历
class Solution:
    def numRookCaptures(self, board: List[List[str]]) -> int:
        if not board:
            return 0
        #找到车的起始位置
        for i,line in enumerate(board):
            for j,w in enumerate(line):
                if w == "R":
                    x,y = i,j
        count = 0
        #沿着一个方向运动,直到到达边界或者象、卒
        for (dx,dy) in [(-1,0),(1,0),(0,1),(0,-1)]:
            new_x = x+dx
            new_y = y+dy
            while not (new_x < 0 or new_x>=len(board) or new_y < 0 or new_y>=len(board[0])):
                if board[new_x][new_y] == "B":
                    break
                if board[new_x][new_y] == "p":
                    count += 1
                    break
                new_x += dx
                new_y += dy
        return count

Supongo que te gusta

Origin www.cnblogs.com/gongyanzh/p/12574459.html
Recomendado
Clasificación