Skip to content

Commit a50f730

Browse files
Merge pull request raviprakashdev#69 from min0o/master
Create 8queens.py
2 parents a2a794f + b59af4c commit a50f730

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

8queens.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
BOARD_SIZE = 8
2+
3+
class BailOut(Exception):
4+
pass
5+
6+
def validate(queens):
7+
left = right = col = queens[-1]
8+
for r in reversed(queens[:-1]):
9+
left, right = left-1, right+1
10+
if r in (left, col, right):
11+
raise BailOut
12+
13+
def add_queen(queens):
14+
for i in range(BOARD_SIZE):
15+
test_queens = queens + [i]
16+
try:
17+
validate(test_queens)
18+
if len(test_queens) == BOARD_SIZE:
19+
return test_queens
20+
else:
21+
return add_queen(test_queens)
22+
except BailOut:
23+
pass
24+
raise BailOut
25+
26+
queens = add_queen([])
27+
print (queens)
28+
print ("\n".join(". "*q + "Q " + ". "*(BOARD_SIZE-q-1) for q in queens))

0 commit comments

Comments
 (0)