🩸

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