Skip to content

Instantly share code, notes, and snippets.

@seisvelas
Created December 6, 2018 23:55
Show Gist options
  • Save seisvelas/7cb42bad8e315dcba996ffbd19fac85e to your computer and use it in GitHub Desktop.
Save seisvelas/7cb42bad8e315dcba996ffbd19fac85e to your computer and use it in GitHub Desktop.
Generates a...generator? To lazily generate nqueens solutions
def threatened(pos, past, n):
for i in range(len(past)):
if past[i] == pos or abs(pos - past[i]) == len(past) - i:
return True
return False
def nqueens(n, past=None):
if past == None:
for i in range(n):
yield from nqueens(n, [i+1])
else:
if len(past) == n:
yield past[:]
else:
for pos in range(1,n+1):
if not threatened(pos, past, n):
yield from nqueens(n,past + [pos])
nq = nqueens(8)
print(len(list(nq)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment