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)