🩸
N-Queens問題を解くpythonスクリプト
N-Queens問題をpythonで解きます。ソースをコピーしてnqueens.pyというファイルにし、chmod +x nqueens.pyで実行権を付け、./nqueens.pyで実行してください。
実行すると、Number:というプロンプトが出るので、8-Queens問題なら、8を入力してください。
#!/usr/bin/env python3
def found():
global solution
solution+=1
print(f"\n 解 {solution}\n")
for i in range(N):
for j in range(N):
print(" Q" if x[i]==j else " .",end='')
print("")
def _try(i):
global a,b,c
for j in range(N):
if a[j] and b[i+j] and c[i-j+N-1]:
x[i]=j
if i<N-1:
a[j],b[i+j],c[i-j+N-1]=False,False,False
_try(i+1)
a[j],b[i+j],c[i-j+N-1]=True,True,True
else:
found()
N=int(input("Number:"))
a=[True]*N
b=[True]*(2*N-1)
c=[True]*(2*N-1)
x=[0]*N
solution=0
_try(0)
Discussion