20 lines
665 B
Python
20 lines
665 B
Python
BOARD_SIZE = 8
|
|
|
|
def under_attack(col, queens):
|
|
return col in queens or \
|
|
any(abs(col - x) == len(queens)-i for i,x in enumerate(queens))
|
|
|
|
def solve(n):
|
|
solutions = [[]]
|
|
for row in range(n):
|
|
solutions = (solution+[i+1]
|
|
for solution in solutions # first for clause is evaluated immediately,
|
|
# so "solutions" is correctly captured
|
|
for i in range(BOARD_SIZE)
|
|
if not under_attack(i+1, solution))
|
|
return solutions
|
|
|
|
answers = solve(BOARD_SIZE)
|
|
first_answer = next(answers)
|
|
print(list(enumerate(first_answer, start=1)))
|