#include #include #include /* // States in 4x3 grid world are defined as follows: // 3 5 8 11 // 2 7 10 // 1 4 6 9 */ double T(int s, int a, int nexts) { if (s==10) { return ((double) (nexts==10)); } if (s==11) { return ((double) (nexts==11)); } switch (a) { case 1: // Up switch (s) { case 1: if(nexts==2) return 0.8; if(nexts==1) return 0.1; if(nexts==4) return 0.1; return 0.; case 2: if(nexts==3) return 0.8; if(nexts==2) return 0.2; return 0.; case 3: if(nexts==3) return 0.9; if(nexts==5) return 0.1; return 0.; case 4: if(nexts==4) return 0.8; if(nexts==1) return 0.1; if(nexts==6) return 0.1; return 0.; case 5: if(nexts==5) return 0.8; if(nexts==3) return 0.1; if(nexts==8) return 0.1; return 0.; case 6: if(nexts==7) return 0.8; if(nexts==4) return 0.1; if(nexts==9) return 0.1; return 0.; case 7: if(nexts==8) return 0.8; if(nexts==7) return 0.1; if(nexts==10) return 0.1; return 0.; case 8: if(nexts==8) return 0.8; if(nexts==5) return 0.1; if(nexts==11) return 0.1; return 0.; case 9: if(nexts==10) return 0.8; if(nexts==6) return 0.1; if(nexts==9) return 0.1; return 0.; } case 2: // Left switch (s) { case 1: if(nexts==1) return 0.9; if(nexts==2) return 0.1; return 0.; case 2: if(nexts==2) return 0.8; if(nexts==3) return 0.1; if(nexts==1) return 0.1; return 0.; case 3: if(nexts==3) return 0.9; if(nexts==2) return 0.1; return 0.; case 4: if(nexts==1) return 0.8; if(nexts==4) return 0.2; return 0.; case 5: if(nexts==3) return 0.8; if(nexts==5) return 0.2; return 0.; case 6: if(nexts==4) return 0.8; if(nexts==7) return 0.1; if(nexts==6) return 0.1; return 0.; case 7: if(nexts==7) return 0.8; if(nexts==8) return 0.1; if(nexts==6) return 0.1; return 0.; case 8: if(nexts==5) return 0.8; if(nexts==7) return 0.1; if(nexts==8) return 0.1; return 0.; case 9: if(nexts==6) return 0.8; if(nexts==10) return 0.1; if(nexts==9) return 0.1; return 0.; } case 3: // Right switch (s) { case 1: if(nexts==4) return 0.8; if(nexts==1) return 0.1; if(nexts==2) return 0.1; return 0.; case 2: if(nexts==2) return 0.8; if(nexts==1) return 0.1; if(nexts==3) return 0.1; return 0.; case 3: if(nexts==5) return 0.8; if(nexts==3) return 0.1; if(nexts==2) return 0.1; return 0.; case 4: if(nexts==6) return 0.8; if(nexts==4) return 0.2; return 0.; case 5: if(nexts==8) return 0.8; if(nexts==5) return 0.2; return 0.; case 6: if(nexts==9) return 0.8; if(nexts==7) return 0.1; if(nexts==6) return 0.1; return 0.; case 7: if(nexts==10) return 0.8; if(nexts==8) return 0.1; if(nexts==6) return 0.1; return 0.; case 8: if(nexts==11) return 0.8; if(nexts==7) return 0.1; if(nexts==8) return 0.1; return 0.; case 9: if(nexts==9) return 0.9; if(nexts==10) return 0.1; return 0.; } case 4: // Down switch (s) { case 1: if(nexts==1) return 0.9; if(nexts==4) return 0.1; return 0.; case 2: if(nexts==1) return 0.8; if(nexts==2) return 0.2; return 0.; case 3: if(nexts==2) return 0.8; if(nexts==5) return 0.1; if(nexts==3) return 0.1; return 0.; case 4: if(nexts==4) return 0.8; if(nexts==1) return 0.1; if(nexts==6) return 0.1; return 0.; case 5: if(nexts==5) return 0.8; if(nexts==3) return 0.1; if(nexts==8) return 0.1; return 0.; case 6: if(nexts==6) return 0.8; if(nexts==4) return 0.1; if(nexts==9) return 0.1; return 0.; case 7: if(nexts==6) return 0.8; if(nexts==7) return 0.1; if(nexts==10) return 0.1; return 0.; case 8: if(nexts==7) return 0.8; if(nexts==5) return 0.1; if(nexts==11) return 0.1; return 0.; case 9: if(nexts==9) return 0.9; if(nexts==6) return 0.1; return 0.; } } } int main() { for(int s=1; s<=11; s++) { for(int a=1; a<=4; a++) { for(int nexts=1; nexts<=11; nexts++) { double tmp=T(s,a,nexts); if (tmp>0.000001) { printf("T( %2d, %2d, %2d ) = %f\n",s,a,nexts,T(s,a,nexts)); } } } } }