/*
我们定义一个无限大的二维网格上有一个小人,小人初始位置为 (0,0) 点,小人可以读取指令上下左右移动。一个合法的指令由三至四个符号组成:
∙第一个符号为 "A/D/W/S" 中的一个,代表小人移动的方向;分别代表向左、向右、向上、向下移动;记某个时刻小人的坐标为
(x,y),向左移动一格即抵达 (x−1,y)、向右移动一格即抵达 (x+1,y)、向上移动一格即抵达 (x,y+1)、向下移动一格即抵达 (x,y−1)。
∙最后一个符号为 ‘;’,代表指令的结束,该符号固定存在;
∙中间为一个大于 0 且小于 100 的数字,代表小人移动的距离。特别地,如果这个数字小于 10,那么它可能包含一个前导零,此时也视为合法。
如果你遇到了一个不合法的指令,则直接忽略;例如,指令 "A100;" 是不合法的,因为 100 超出了规定的数字范围;"Y10;" 也是不合法的,因为 Y 不是 "A/D/W/S" 中的一个。输出小人最终的坐标。
*/
#include <stdio.h>
#include <string.h>
int to_int(char *str){
char *p = str;
int num = atoi(str);
int i=0,len = strlen(str);
for(i=0; i<len;i++){
if(p[i]< '0' || p[i]> '9' ){
return -1;
}
}
return num;
}
int main(){
char *p = NULL, *fen=NULL;
int x = 0, y = 0;
char buf[100000];
char command[100], shuzi[100];
int sum=0;
char *result = fgets(buf, sizeof(buf), stdin);
if(result == NULL){
return 0 ;
}
int lenght = strlen(buf);
if( lenght<= 0 ){
return 0;
}
if(buf[lenght-1] == '\n'){
buf[lenght-1] = '\0';
}
lenght = strlen(buf);
if(buf[lenght-1] != ';' ){
return 0;
}
p = buf;
while(*p != '\0'){
fen = strchr(p, ';');
int len = fen - p;
if(len > 1){
memset(command, '\0', sizeof(command));
memcpy(command, p, len);
if(command[0] == 'A' || command[0] == 'D' || command[0] == 'W'|| command[0] == 'S'){
if(len >= 2){
memset(shuzi, '\0', sizeof(shuzi));
memcpy(shuzi, command+1, len -1);
sum = to_int(shuzi);
if(sum > 0){
if(command[0] == 'A'){
x=x-sum;
}else if(command[0] == 'D'){
x=x+sum;
}else if(command[0] == 'W'){
y=y+sum;
}else if(command[0] == 'S'){
y=y-sum;
}
}
}
}
}
p = p+len+1;
}
printf("%d,%d\r\n", x, y);
}