
Bishop And Pawn
Bàn cờ vua là một bảng có 8*8
ô vuông
Mỗi ô trên bàn cờ được kí hiệu bằng 2
kí tự – 1
kí tự chữ cái và 1
kí tự số
- Các cột hàng dọc được gán nhãn từ trái sang phải bằng các kí tự chữ cái từ
'a'
tới'h'
- Các hàng ngang được đánh số từ
1
tới8
từ phía dưới lên trên - Vị trí mỗi một ô trên bàn cờ được thể hiện bằng xâu có
2
kí tự: kí tự đầu tiên thể hiện cột, kí tự thứ hai thể hiện hàng. Ví dụ nhưa8, b3, c2, ...
Cho tọa độ tượng trắng bishop
và tốt đen pawn
trên bàn cờ tiêu chuẩn, kiểm tra xem tượng trắng có thể ăn tốt đen trong một nước đi hay không?
Tượng là quân có thể di chuyển tới các ô trên cùng đường chéo, giống như hình minh họa bên dưới
Ví dụ
-
Với
bishop = "a1"
vàpawn = "c3"
, kết quảbishopAndPawn(bishop, pawn) = true
. -
Với
bishop = "h1"
vàpawn = "h3"
, kết quảbishopAndPawn(bishop, pawn) = false
.
Đầu vào/Đầu ra
-
[Thời gian chạy] 0.5 giây
-
[Đầu vào] string bishop
Tọa độ của con tượng trắng.
Điều kiện:bishop.length = 2
,'a' ≤ bishop[0] ≤ 'h'
,1 ≤ bishop[1] ≤ 8
. -
[Đầu vào] string pawn
Tọa độ của con tốt đen.
Điều kiện:pawn.length = 2
,'a' ≤ pawn[0] ≤ 'h'
,1 ≤ pawn[1] ≤ 8
. -
[Đầu ra] boolean
Lý thuyết :
- Cho 1 ma trận
n * n
- Đường chéo chính là đường chéo đi từ ô
(1, 1)
đến ô(n, n)
, bao gồm các ô có dạngA[i][i] (i = 1 .. n)
- Đường chéo phụ là đường chéo đi từ ô
(1, n)
đến ô(n, 1)
, bao gồm các ô có dạngA[i][n + 1 - i] (i = 1 .. n)
- 2 ô và nằm trên cùng 1 đường chéo khi và chỉ khi chúng có tổng tọa độ hoặc hiệu tọa độ bằng nhau
- Tức là, 2 ô
(x, y)
và(u, v)
cùng đường chéo<=>
x + y = u + v
hoặcx - y = u - v
- Hình ảnh minh họa
Hướng dẫn bài tập.
Code mẫu:
Ngôn ngữ C++:
bool bishopAndPawn(std::string bishop, std::string pawn)
{
return (abs(bishop[0] - pawn[0]) == abs(bishop[1] - pawn[1]) && bishop[0] - pawn[0] != 0);
}
Post Comment