colors = [['red', 'green', 'green', 'red' , 'red'],
['red', 'red', 'green', 'red', 'red'],
['red', 'red', 'green', 'green', 'red'],
['red', 'red', 'red', 'red', 'red']]
measurements = ['green', 'green', 'green' ,'green', 'green']
motions = [[0,0],[0,1],[1,0],[1,0],[0,1]]
sensor_right = 0.7
p_move = 0.8
def show(p):
for i in range(len(p)):
print p[i]
#DO NOT USE IMPORT
#ENTER CODE BELOW HERE
#ANY CODE ABOVE WILL CAUSE
#HOMEWORK TO BE GRADED
#INCORRECT
#INCORRECT
p = []
sensor_wrong=1.-sensor_right
def sense(p, Z):
q=[]
for i in range(len(p)):
r=[]
for j in range(len(p[i])):
hit = (Z == colors[i][j])
r.append(p[i][j] * (hit * sensor_right + (1-hit) * sensor_wrong))
q.append(r)
s = 0
for i in q:
s+=sum(i)
for i in range(len(q)):
for j in range(len(q[i])):
q[i][j]=q[i][j]/s
return q
def move(p, U,V):
q = []
for i in range(len(p)):
r=[]
for j in range(len(p[i])):
s = p_move * p[(i-U) % len(p)][(j-V) % len(p[i])]
p_stationary=1.-p_move
s = s + (p_stationary) * p[i % len(p)][j % len(p[i])]
r.append(s)
q.append(r)
return q
def Norm():
p=[]
norm = len(colors)*len(colors[0])
norm=1./norm
for i in range(len(colors)):
r=[]
for j in range(len(colors[i])):
r.append(norm)
p.append(r)
return p
p=Norm()
for i in range(len(motions)):
p=move(p,motions[i][0],motions[i][1])
p=sense(p,measurements[i])
#Your probability array must be printed
#with the following code.
show(p)