Skip to content

Commit 6732b25

Browse files
authored
Update number-of-valid-move-combinations-on-chessboard.py
1 parent 5426b3a commit 6732b25

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

Python/number-of-valid-move-combinations-on-chessboard.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,18 @@ def backtracking(pieces, positions, i, lookup):
1919
result = 0
2020
r, c = positions[i]
2121
r, c = r-1, c-1
22-
if not lookup[r][c]:
23-
lookup[r][c] = all_mask # stopped at (r, c)
22+
mask = all_mask
23+
if not (lookup[r][c]&mask):
24+
lookup[r][c] += mask # stopped at (r, c)
2425
result += backtracking(pieces, positions, i+1, lookup)
25-
lookup[r][c] = 0
26+
lookup[r][c] -= mask
2627
for dr, dc in directions[pieces[i]]:
2728
bit, nr, nc = 1, r+dr, c+dc
2829
mask = all_mask # (mask&bit == 1): (log2(bit)+1)th second is occupied
2930
while 0 <= nr < 8 and 0 <= nc < 8 and not (lookup[nr][nc]&bit):
3031
lookup[nr][nc] += bit
3132
mask -= bit
32-
if not lookup[nr][nc]&mask: # stopped at (nr, nc)
33+
if not (lookup[nr][nc]&mask): # stopped at (nr, nc)
3334
lookup[nr][nc] += mask
3435
result += backtracking(pieces, positions, i+1, lookup)
3536
lookup[nr][nc] -= mask
@@ -38,5 +39,5 @@ def backtracking(pieces, positions, i, lookup):
3839
bit, nr, nc = bit>>1, nr-dr, nc-dc
3940
lookup[nr][nc] -= bit
4041
return result
41-
42+
4243
return backtracking(pieces, positions, 0, [[0]*8 for _ in range(8)])

0 commit comments

Comments
 (0)