Go•available-captures-for-rook/solution.go
package main
func numRookCaptures(board [][]byte) int {
rookRow, rookColumn := 0, 0
for row := 0; row < 8; row++ {
for column := 0; column < 8; column++ {
if board[row][column] == 'R' {
rookRow, rookColumn = row, column
}
}
}
captures := 0
directions := [][]int{{-1, 0}, {1, 0}, {0, -1}, {0, 1}}
for _, direction := range directions {
row, column := rookRow+direction[0], rookColumn+direction[1]
for row >= 0 && row < 8 && column >= 0 && column < 8 && board[row][column] == '.' {
row += direction[0]
column += direction[1]
}
if row >= 0 && row < 8 && column >= 0 && column < 8 && board[row][column] == 'p' {
captures++
}
}
return captures
}
Python•available-captures-for-rook/solution.py
class Solution:
def numRookCaptures(self, board: list[list[str]]) -> int:
rook = next((row, column) for row in range(class="syntax-number">8) for column in range(class="syntax-number">8) if board[row][column] == class="syntax-string">"R")
captures = class="syntax-number">0
for dr, dc in ((-class="syntax-number">1, class="syntax-number">0), (class="syntax-number">1, class="syntax-number">0), (class="syntax-number">0, -class="syntax-number">1), (class="syntax-number">0, class="syntax-number">1)):
row, column = rook[class="syntax-number">0] + dr, rook[class="syntax-number">1] + dc
while class="syntax-number">0 <= row < class="syntax-number">8 and class="syntax-number">0 <= column < class="syntax-number">8 and board[row][column] == class="syntax-string">".": row, column = row + dr, column + dc
if class="syntax-number">0 <= row < class="syntax-number">8 and class="syntax-number">0 <= column < class="syntax-number">8 and board[row][column] == class="syntax-string">"p": captures += class="syntax-number">1
return captures
TypeScript•available-captures-for-rook/solution.ts
function numRookCaptures(board: string[][]): number {
let rookRow = class="syntax-number">0; let rookColumn = class="syntax-number">0;
for (let row = class="syntax-number">0; row < class="syntax-number">8; row += class="syntax-number">1) for (let column = class="syntax-number">0; column < class="syntax-number">8; column += class="syntax-number">1) if (board[row][column] === class="syntax-string">"R") { rookRow = row; rookColumn = column; }
let captures = class="syntax-number">0;
for (const [dr, dc] of [[-class="syntax-number">1, class="syntax-number">0], [class="syntax-number">1, class="syntax-number">0], [class="syntax-number">0, -class="syntax-number">1], [class="syntax-number">0, class="syntax-number">1]]) { let row = rookRow + dr; let column = rookColumn + dc; while (row >= class="syntax-number">0 && row < class="syntax-number">8 && column >= class="syntax-number">0 && column < class="syntax-number">8 && board[row][column] === class="syntax-string">".") { row += dr; column += dc; } if (row >= class="syntax-number">0 && row < class="syntax-number">8 && column >= class="syntax-number">0 && column < class="syntax-number">8 && board[row][column] === class="syntax-string">"p") captures += class="syntax-number">1; }
return captures;
}