コードは、ローカリゼーション アルゴリズムの実装です。
colors = [['red', 'green', 'green', 'red' , 'red'],
['red', 'red', 'green', 'red', 'red'],
['red', 'red', 'green', 'green', 'red'],
['red', 'red', 'red', 'red', 'red']]
motions = [[0,0],[0,1],[1,0],[1,0],[0,1]]
p_move = 0.8
def show(p):
for i in range(len(p)):
print p[i]
p = []
sum=0
for i in range(len(colors)):
for j in range(len(colors[i])):
sum+=1
p=[[1.0/sum for j in range(len(colors[i]))] for i in range(len(colors))]
def move(lst,u=[]):
q=[]
if (u[0]!=0) :
for i in range(len(lst)):
new=[]
for j in range(len(lst[i])):
val=lst[j-u][i]*p_move
new.append(val)
q.append(new)
elif (u[1]!=0) :
for i in range(len(lst)):
new=[]
for j in range(len(lst[i])):
val=lst[i][j-u]*p_move
new.append(val)
q.append(new)
return q
a=[[0 for i in range(len(colors[j]))] for j in range(len(colors))]
for i in range(len(motions)):
a=move(p,motions[i])
show(p)
上記のコードはTypeError
、次のステートメントの質問で指定されたをスローします。
val=lst[i][j-u]*p_move
なぜこれが起こっているのか教えてください。私は Python の初心者であり、コンパイラがこのエラーをスローする理由がわかりません。また、リストにあるリストの値に従って、列と行の値を変更しようとしていますmotions
。これを達成しようとしている方法は正しいですか?
編集
多くの人がこのコードの目的を尋ねてきました。質問のコメント セクションで述べたことを繰り返します。これは、ローカリゼーション アルゴリズムを実装するためのコードの一部です。コードのこの部分は、移動の確率を計算するために使用されます。目的のセルへの移動が成功する確率は、p_move = 0.8 です。デバイスがそのセルに移動するように命令された場合、特定のセルの以前の確率にこの値が乗算されます。
ただし、コメンテーターの 1 人によって要求されたサンプル出力には、コードの他の部分を含める必要があり、これにはさらに説明が必要であり、目的がさらに混乱します。