https://leetcode.com/problems/available-captures-for-rook/description/ | Easy |
---|
На шахматной доске размером 8×8 находится одна белая ладья 'R'
. Также на доске могут находиться белые слоны 'B'
, чёрные пешки 'p'
и пустые клетки '.'
.
Ладья может двигаться по правилам шахмат: она выбирает одно из четырёх направлений (вверх, вниз, влево, вправо) и движется в этом направлении до тех пор, пока не встретит препятствие (край доски, белого слона или чёрную пешку). Ладья не может проходить через белых слонов и может захватывать только чёрные пешки.
Необходимо определить, сколько чёрных пешек может захватить ладья за один ход.
class Solution {
fun numRookCaptures(board: Array<CharArray>): Int {
var rookRow = -1
var rookCol = -1
for (i in board.indices) {
for (j in board[i].indices) {
if (board[i][j] == 'R') {
rookRow = i
rookCol = j
break
}
}
if (rookRow != -1) break
}
var captures = 0
val directions = arrayOf(
intArrayOf(-1, 0),
intArrayOf(1, 0),
intArrayOf(0, -1),
intArrayOf(0, 1)
)
for (dir in directions) {
var x = rookRow + dir[0]
var y = rookCol + dir[1]
while (x in 0..7 && y in 0..7) {
when (board[x][y]) {
'B' -> break
'p' -> {
captures++
break
}
}
x += dir[0]
y += dir[1]
}
}
return captures
}
}