Index: src/solver.d ================================================================== --- src/solver.d +++ src/solver.d @@ -227,10 +227,15 @@ int[] yyy=[p.y-1,p.y+1,p.y,p.y]; int[] xxx=[p.x,p.x,p.x-1,p.x+1]; for(int i=0; i=4)continue; + if(y!=p.y)continue; + if(g.map[y,p.x+(p.x-x)]!=' '&&g.map[y,p.x+(p.x-x)]!='R')continue; + } if('1'<=g.map[y,x]&&g.map[y,x]<='9') { foreach(ppp; g.map.tr_source[g.map[y,x]]) { yyy ~= ppp.y; xxx ~= ppp.x; } @@ -240,14 +245,11 @@ if(y==s.y && x==s.x && i<4) { char c = "UDRL"[i]; if( death.count(c) == 0 ) return [tuple(c,step)]; } else if(forbidden_cell[y][x]){ - } else if(g.map[y,x]==' '||g.map[y,x]=='\\'||g.map[y,x]=='.'||i>=4) { - q2 ~= new Pos(y,x); - v[y][x]=true; - } else if(i<4 && (y-p.y)==0 && g.map[p]==' ' && g.map[y,x]=='*' && (g.map[y+(y-p.y),x+(x-p.x)]==' '||g.map[y+(y-p.y),x+(x-p.x)]=='R')) { + } else if(g.map[y,x]==' '||g.map[y,x]=='\\'||g.map[y,x]=='.'||g.map[y,x]=='*'||i>=4) { q2 ~= new Pos(y,x); v[y][x]=true; } } }