-1

チェス盤上の n-queens の状態のすべての隣接ノードを返す関数を作成しようとしています。以下は私のコードです。主に、パラメータ入力状態に基づいて隣接ノードのリストを生成します。

#Generate neighboring state's function
def generate_neighbor_node (cur_state):
    current = cur_state
    neighbor = current
    neighbor_list = []
    for i in range(qs):
        chg_value = neighbor[i]
        chg_value +=1
        if chg_value == qs:
            chg_value =0
        neighbor[i] = chg_value 
        print neighbor       
        neighbor_list.append(neighbor)
    #Reverse the process, to change the node value back to original for next
    #loop to generate another valid neighbor state
        chg_value -=1
        if chg_value == -1:
           chg_value = (qs-1)
        neighbor[i] = chg_value    

   return neighbor_list                

print board
ai = generate_neighbor_node(board)
print ai

The output is like this:
1. [1, 3, 2, 0]
2. [2, 3, 2, 0]
3. [1, 0, 2, 0]
4. [1, 3, 3, 0]
5. [1, 3, 2, 1]
[[1, 3, 2, 0], [1, 3, 2, 0], [1, 3, 2, 0], [1, 3, 2, 0]]

しかし、私が本当に欲しいのは、リストに含まれる配列が 2、3、4、および 5 であり、1 ではないことです。助けてください、ありがとう。

4

1 に答える 1