@@ -60,25 +60,147 @@ It is impossible to capture the black queen in less than two moves since it is n
60
60
### ** Python3**
61
61
62
62
``` python
63
-
63
+ class Solution :
64
+ def minMovesToCaptureTheQueen (
65
+ self , a : int , b : int , c : int , d : int , e : int , f : int
66
+ ) -> int :
67
+ def check (dirs , sx , sy , bx , by ) -> bool :
68
+ for dx, dy in pairwise(dirs):
69
+ for k in range (1 , 8 ):
70
+ x = sx + dx * k
71
+ y = sy + dy * k
72
+ if not (1 <= x <= 8 and 1 <= y <= 8 ) or (x, y) == (bx, by):
73
+ break
74
+ if (x, y) == (e, f):
75
+ return True
76
+ return False
77
+
78
+ dirs1 = (- 1 , 0 , 1 , 0 , - 1 )
79
+ dirs2 = (- 1 , 1 , 1 , - 1 , - 1 )
80
+ return 1 if check(dirs1, a, b, c, d) or check(dirs2, c, d, a, b) else 2
64
81
```
65
82
66
83
### ** Java**
67
84
68
85
``` java
69
-
86
+ class Solution {
87
+ private final int [] dirs1 = {- 1 , 0 , 1 , 0 , - 1 };
88
+ private final int [] dirs2 = {- 1 , 1 , 1 , - 1 , - 1 };
89
+ private int e, f;
90
+
91
+ public int minMovesToCaptureTheQueen (int a , int b , int c , int d , int e , int f ) {
92
+ this . e = e;
93
+ this . f = f;
94
+ return check(dirs1, a, b, c, d) || check(dirs2, c, d, a, b) ? 1 : 2 ;
95
+ }
96
+
97
+ private boolean check (int [] dirs , int sx , int sy , int bx , int by ) {
98
+ for (int d = 0 ; d < 4 ; ++ d) {
99
+ for (int k = 1 ; k < 8 ; ++ k) {
100
+ int x = sx + dirs[d] * k;
101
+ int y = sy + dirs[d + 1 ] * k;
102
+ if (x < 1 || x > 8 || y < 1 || y > 8 || (x == bx && y == by)) {
103
+ break ;
104
+ }
105
+ if (x == e && y == f) {
106
+ return true ;
107
+ }
108
+ }
109
+ }
110
+ return false ;
111
+ }
112
+ }
70
113
```
71
114
72
115
### ** C++**
73
116
74
117
``` cpp
75
-
118
+ class Solution {
119
+ public:
120
+ int minMovesToCaptureTheQueen(int a, int b, int c, int d, int e, int f) {
121
+ int dirs[ 2] [ 5 ] = {{-1, 0, 1, 0, -1}, {-1, 1, 1, -1, -1}};
122
+ auto check = [ &] (int i, int sx, int sy, int bx, int by) {
123
+ for (int d = 0; d < 4; ++d) {
124
+ for (int k = 1; k < 8; ++k) {
125
+ int x = sx + dirs[ i] [ d ] * k;
126
+ int y = sy + dirs[ i] [ d + 1 ] * k;
127
+ if (x < 1 || x > 8 || y < 1 || y > 8 || (x == bx && y == by)) {
128
+ break;
129
+ }
130
+ if (x == e && y == f) {
131
+ return true;
132
+ }
133
+ }
134
+ }
135
+ return false;
136
+ };
137
+ return check(0, a, b, c, d) || check(1, c, d, a, b) ? 1 : 2;
138
+ }
139
+ };
76
140
```
77
141
78
142
### **Go**
79
143
80
144
```go
145
+ func minMovesToCaptureTheQueen(a int, b int, c int, d int, e int, f int) int {
146
+ dirs := [2][5]int{{-1, 0, 1, 0, -1}, {-1, 1, 1, -1, -1}}
147
+ check := func(i, sx, sy, bx, by int) bool {
148
+ for d := 0; d < 4; d++ {
149
+ for k := 1; k < 8; k++ {
150
+ x := sx + dirs[i][d]*k
151
+ y := sy + dirs[i][d+1]*k
152
+ if x < 1 || x > 8 || y < 1 || y > 8 || (x == bx && y == by) {
153
+ break
154
+ }
155
+ if x == e && y == f {
156
+ return true
157
+ }
158
+ }
159
+ }
160
+ return false
161
+ }
162
+ if check(0, a, b, c, d) || check(1, c, d, a, b) {
163
+ return 1
164
+ }
165
+ return 2
166
+ }
167
+ ```
81
168
169
+ ### ** TypeScript**
170
+
171
+ ``` ts
172
+ function minMovesToCaptureTheQueen(
173
+ a : number ,
174
+ b : number ,
175
+ c : number ,
176
+ d : number ,
177
+ e : number ,
178
+ f : number ,
179
+ ): number {
180
+ const dirs: number [][] = [
181
+ [- 1 , 0 , 1 , 0 , - 1 ],
182
+ [- 1 , 1 , 1 , - 1 , - 1 ],
183
+ ];
184
+ const check = (i : number , sx : number , sy : number , bx : number , by : number ): boolean => {
185
+ for (let d = 0 ; d < 4 ; ++ d ) {
186
+ for (let k = 1 ; k < 8 ; ++ k ) {
187
+ const x = sx + dirs [i ][d ] * k ;
188
+ const y = sy + dirs [i ][d + 1 ] * k ;
189
+ if (x < 1 || x > 8 || y < 1 || y > 8 ) {
190
+ break ;
191
+ }
192
+ if (x === bx && y === by ) {
193
+ break ;
194
+ }
195
+ if (x === e && y === f ) {
196
+ return true ;
197
+ }
198
+ }
199
+ }
200
+ return false ;
201
+ };
202
+ return check (0 , a , b , c , d ) || check (1 , c , d , a , b ) ? 1 : 2 ;
203
+ }
82
204
```
83
205
84
206
### ** ...**
0 commit comments