前提・実現したいこと
nQueensのコードを修正して、与えた位置のリストにクイーンが置かれた解を探し、あれば出力するようにしたい。例えば、board=[-1,-1,4,-1,-1,-1,-1,0,-1,5]なら、3つのクイーンが10*10の盤面で3,8,10番目の列にあり、コードは指定位置を含んだしたのような解を生成するのですがうまくいきません。
発生している問題・エラーメッセージ
試したことにより、一部は表示できたけれど、boardの中の-1の部分の変更がうまくいかない。
該当のソースコード
def noConflicts(board,current): for i in range(current): if board[i]==board[current]: return False if current-i==abs(board[current]-board[i]): return False return True def rQueens(board,current,size): if current==size: return True else: for i in range(size): board[current]=i if noConflicts(board,current): found=rQueens(board,current+1,size) if found: return True return False def nQueens(N): board=[-1,-1,4,-1,-1,-1,-1,0,-1,5] rQueens(board,0,N) print(board) for i in range(N): for j in range(N): if board[j]==i: print('Q',end=" ") else: print('.',end=" ") print('') nQueens(10)
試したこと
def rQueens(board,current,size):
if current==size:
return True
else:
for i in range(size):
if board[current]==-1: //これを入れることでboardの中の4,0,5の部分にQを出すことには成功した。
board[current]=i
if noConflicts(board,current):
found=rQueens(board,current+1,size)
if found:
return True
return False
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。