From 465afa0076872665d031125a0c71f0a46f9100d3 Mon Sep 17 00:00:00 2001 From: blertap Date: Thu, 24 Jan 2013 15:11:45 +0100 Subject: [PATCH] Update homework1.4/task.py --- homework1.4/task.py | 51 ++++++++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/homework1.4/task.py b/homework1.4/task.py index 5da90d9..c44c56a 100644 --- a/homework1.4/task.py +++ b/homework1.4/task.py @@ -3,33 +3,54 @@ ['red', 'red', 'green', 'green', 'red'], ['red', 'red', 'red', 'red', 'red']] -measurements = ['green', 'green', 'green', 'green', 'green'] +measurements = ['green', 'green', 'green' ,'green', 'green'] +p=[] - -motions = [[0, 0], [0, 1], [1, 0], [1, 0], [0, 1]] +motions = [[0,0],[0,1],[1,0],[1,0],[0,1]] sensor_right = 0.7 p_move = 0.8 +sensor_wrong=1.0-sensor_right +p_stay=1.0-p_move + +def sense(p,colors,measurement): + aux=[[0.0 for row in range (len(p[0]))] for col in range(len(p))] + s=0.0 + for i in range(len(p)): + for j in range (len(p[i])): + hit=(measurement==colors[i][j]) + aux[i][j]=p[i][j]*(hit*sensor_right+(1-hit)*(sensor_wrong)) + s+=aux[i][j] + for i in range (len(aux)): + for j in range (len(p[i])): + aux[i][j]/=s + return aux + +def move(p, motion): + aux=[[0.0 for row in range(len(p[0]))] for col in range (len(p))] + + for i in range(len(p)): + for j in range (len(p[i])): + aux[i][j]=(p_move*p[(i-motion[0])%len(p)][(j-motion[1])%len(p[i])])+(p_stay*p[i][j]) + return aux + + def show(p): for i in range(len(p)): print p[i] + +pinit=1.0/float(len(colors))/float(len(colors[0])) +p=[[pinit for row in range(len(colors[0]))] for col in range(len(colors))] + +for k in range(len(measurements)): + p=move(p, motions[k]) + p=sense(p,colors,measurements[k]) -def calculate(): +show(p) - #DO NOT USE IMPORT - #ENTER CODE BELOW HERE - #ANY CODE ABOVE WILL CAUSE - #HOMEWORK TO BE GRADED - #INCORRECT - - p = [] - #Your probability array must be printed - #with the following code. - show(p) - return p