Mutant Flatworld explorers
C Code
#include<stdio.h>
#define MAXN 52
char Grid[MAXN][MAXN];
char Cmd[110];
char Side[] = "WNES";
int X[] = {0, -1, 0, 1};
int Y[] = {-1, 0, 1, 0};
int D[5];
int R, C;
void Ini() {
int i;
for(i = 0; Side[i]; i++) {
D[Side[i]] = i;
}
}
void Move(int r, int c, int dir) {
int i, tr, tc;
for(i = 0; Cmd[i]; i++) {
if(Cmd[i] == 'R') dir ++;
else if(Cmd[i] == 'L') dir--;
dir += 4;
dir %= 4;
if(Cmd[i] == 'F') {
tc = Y[dir] + c;
tr = X[dir] + r;
if(tr > R || tc>C || tr<0 || tc<0) {
if(Grid[r][c] != 1) {
printf("%d %d %c LOST\n",c,R - r,Side[dir]);
Grid[r][c] = 1;
return;
}
}
else {
r = tr;
c =tc;
}
}
}
printf("%d %d %c\n",c, R - r, Side[dir]);
}
int main() {
int sr, sc, dir;
char input[100], ss[10];
Ini();
gets(input);
sscanf(input,"%d%d",&C,&R);
while(gets(input)) {
gets(Cmd);
sscanf(input,"%d%d%s",&sc,&sr,ss);
dir = D[ss[0]];
Move(R-sr,sc,dir);
}
return 0;
}