# Print all solutions to 8-queens problem. Public domain, Connelly Barnes 2006. def permutations(L): if len(L) <= 1: yield list(L) else: for i in range(len(L)): for p in permutations(L[:i]+L[i+1:]): yield [L[i]] + p def queens(n): for L in permutations(range(n)): if (len(set(i+L[i] for i in range(n))) == n and # Main diagonals len(set(i-L[i] for i in range(n))) == n): # Skew diagonals yield L if __name__ == '__main__': for sol in queens(8): for col in sol: print '.'*col + 'Q' + '.'*(8-1-col) print