描述:开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。
输入:合法坐标为A(或者D或者W或者S) + 数字(两位以内)坐标之间以;分隔。非法坐标点需要进行丢弃。如AA10; A1A; $%$; YAD; 等。下面是一个简单的例子 ,A10;S20;W10;D30;X;A1A;B10A11;;A10;
处理过程:
起点(0,0)
+ A10 = (-10,0)
+ S20 = (-10,-20)
+ W10 = (-10,-10)
+ D30 = (20,-10)
+ x = 无效
+ A1A = 无效
+ B10A11 = 无效
+ 一个空 不影响
+ A10 = (10,-10)
结果 (10, -10)
数据范围:每组输入的字符串长度满足 1\le n \le 10000 \1≤n≤10000 ,坐标保证满足 -2^{31} \le x,y \le 2^{31}-1 \−2 31 ≤x,y≤2 31 −1 ,且数字部分仅含正数
输入描述:一行字符串
输出描述:最终坐标,以逗号分隔
输入:A10;S20;W10;D30;X;A1A;B10A11;;A10;
输出:10,-10
输入:ABC;AKL;DA1;
输出:0,0
# 1/input-strip-def-ins-split;
# 2/判断【0】-AZ ,【1】【2】-转int数字,length-3;
# 3/A左移动[1:]-int位-坐标X,D右边移动[1:]-int-坐标X;
# 4/W上移动[1:]-int位,坐标Y,S下移动[1:]-int-坐标Y;
def exam(instr):
ins = instr.split(';')[0:-1]
ins = [i for i in ins if i != '']
# print(ins)
# ['A10', 'S20', 'W10', 'D30', 'X', 'A1A', 'B10A11', 'A10']
key = ['A','D','W','S']
num = [str(i) for i in range(10)]
# print(num)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 首先剔除异常的
lis = []
for i in ins:
if i[0] in key and len(i) >= 2 and len(set(i[1:]) - set(num)) == 0:
# 首字母在awsd内,且长度大于等于2
# 除了第一个字母外的 其余所有set集合字符,减去数字后长度为空则说明都是数字字符
lis.append(i)
# print(lis)
# ['A10', 'S20', 'W10', 'D30', 'A10']
if len(lis) == 0:
return '0,0'
# adws本质上为x横轴和y纵轴坐标进行除了,a减去x,d加上x,w加上y,s减去y
x,y = 0,0
for i in lis:
if i[0] == 'A':
x = x - int(i[1:])
# print(x)
if i[0] == 'D':
x = x + int(i[1:])
if i[0] == 'W':
y = y + int(i[1:])
if i[0] == 'S':
y = y - int(i[1:])
# print((x,y))
res = str(x)+','+str(y)
return res
instr = input().strip()
res = exam(instr=instr)
print(res)