-
Notifications
You must be signed in to change notification settings - Fork 137
/
QueenPosition.js
39 lines (36 loc) · 1.37 KB
/
QueenPosition.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/**
* Lớp biểu diễn quân hậu trên bàn cờ.
*/
export default class QueenPosition {
/**
* @param {number} rowIndex
* @param {number} columnIndex
*/
constructor(rowIndex, columnIndex) {
this.rowIndex = rowIndex;
this.columnIndex = columnIndex;
}
/**
* @return {number}
*/
get leftDiagonal() {
// Mỗi vị trí trên cùng một đường chéo bên trái (\) có cùng sự khác biệt về rowIndex và columnIndex.
// Dữ kiện này có thể được sử dụng để nhanh chóng kiểm tra xem hai vị trí (quân hậu) có nằm trên
// cùng một đường chéo bên trái hay không.
// @see https://youtu.be/xouin83ebxE?t=1m59s
return this.rowIndex - this.columnIndex;
}
/**
* @return {number}
*/
get rightDiagonal() {
// Mỗi vị trí trên cùng một đường chéo bên phải (/) có cùng một tổng của rowIndex và columnIndex.
// Dữ kiện này có thể được sử dụng để nhanh chóng kiểm tra xem hai vị trí (quân hậu) có nằm trên
// cùng một đường chéo bên phải hay không.
// @see https://youtu.be/xouin83ebxE?t=1m59s
return this.rowIndex + this.columnIndex;
}
toString() {
return `${this.rowIndex},${this.columnIndex}`;
}
}