-
Notifications
You must be signed in to change notification settings - Fork 66
/
eight_queen.py
37 lines (29 loc) · 876 Bytes
/
eight_queen.py
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
N = 8
counter = 0
def print_solution(chess_board):
for row in range(N):
for col in range(N):
if chess_board[row] != col:
print('-', end=' ')
else:
print('X', end=' ')
print('\n')
print('\n')
def isplaceok(chess_board, row, col):
return not any(
(chess_board[i] == col) or (chess_board[i] - col == row - i) or (chess_board[i] - col == i - row) for i in
range(row))
def add_queen(chess_board, row):
global counter
if row >= N:
print_solution(chess_board)
counter += 1
else:
for col in range(N):
if isplaceok(chess_board, row, col):
chess_board[row] = col
add_queen(chess_board, row + 1)
if __name__ == "__main__":
chess_board = [-1] * N
add_queen(chess_board, 0)
print(counter)