| DRY:
var numRookCaptures = function(board) {
var r, c;
var row, col;
rook_search:
for (r = 0; r < 8; r++) {
for (c = 0; c < 8; c++) {
if (board[r][c] == 'R') {
row = r;
col = c;
break rook_search;
}
}
}
var captures = 0;
function oneCapture(rStart, cStart, rStep, cStep) {
for (r = rStart, c = cStart; ; r += rStep, c += cStep) {
if (!board[r] || !board[r][c]) {
return 0;
} else if (board[r][c] == 'p') {
return 1;
} else if (board[r][c] != '.') {
return 0;
}
}
}
captures += oneCapture(row-1, col, -1, 0);
captures += oneCapture(row+1, col, 1, 0);
captures += oneCapture(row, col-1, 0, -1);
captures += oneCapture(row, col+1, 0, 1);
return captures;
};
Runtime: 48 ms, faster than 96.87% of JavaScript online submissions for Available Captures for Rook.
Memory Usage: 33.8 MB, less than 45.44% of JavaScript online submissions for Available Captures for Rook.
WET:
var numRookCaptures = function(board) {
var r, c;
var row, col;
rook_search: for (r = 0; r < 8; r++) {
for (c = 0; c < 8; c++) {
if (board[r][c] == 'R') {
row = r;
col = c;
break rook_search;
}
}
}
var captures = 0;
if (row > 0) {
for (var r = row - 1; r > 0; r--) {
if (board[r][col] == 'p') {
captures++;
break;
} else if (board[r][col] != '.') {
break;
}
}
}
if (row < 7) {
for (var r = row + 1; r < 8; r++) {
if (board[r][col] == 'p') {
captures++;
break;
} else if (board[r][col] != '.') {
break;
}
}
}
if (col > 0) {
for (var c = col - 1; c > 0; c--) {
if (board[row][c] == 'p') {
captures++;
break;
} else if (board[row][c] != '.') {
break;
}
}
}
if (col < 7) {
for (c = col + 1; c < 8; c++) {
if (board[row][c] == 'p') {
captures++;
break;
} else if (board[row][c] != '.') {
break;
}
}
}
return captures;
};
Runtime: 60 ms, faster than 29.51% of JavaScript online submissions for Available Captures for Rook.
Memory Usage: 34 MB, less than 7.38% of JavaScript online submissions for Available Captures for Rook.
Оба образца являются решениями этой задачи:
Available Captures for Rook – LeetCode
Как нетрудно заметить, первый образец содержит гораздо меньше кода, чем второй. |