import sys, re set_asdw = set('ASDW') set_num = set("1234567890") set_all = set('ASDW1234567890') distance = [] classtest(): def__init__(self): self.temp = [] self.j = 0 self.x_change = 0 self.y_change = 0 defjudge(self,value): self.x_change,self.y_change = 0,0# 每一次 juged 都会 有一个可能的判断,根据true false来看 用不用而已。 if value == None: returnFalse i = 0 while i<len(value): # 只让 i 落在 字母上。 if value[i] notin set_asdw: returnFalse if i == len(value)-1: # 保证 不是字母结尾。 returnFalse if value[i+1] notin set_num: returnFalse if i+2<len(value) and value[i+2] notin set_all: print('ok,i is:',i) returnFalse self.j = i+1# 找到下一个 字符位置,循环开始上面的判断。 while self.j<len(value) and value[self.j] in set_num: self.temp.append(value[self.j]) # 把每个字母后面带着的数字找出来,方便后续。 self.j += 1 if self.j-i >=4: returnFalse # 可能的移动 if value[i] == "A": self.x_change -= int(''.join(self.temp)) if value[i] == "D": self.x_change += int(''.join(self.temp)) if value[i] == "W": self.y_change += int(''.join(self.temp)) if value[i] == "S": self.y_change -= int(''.join(self.temp))
self.temp = [] i = self.j returnTrue # t = test() # j = t.judge('S1A10') # print(j) defmain(): [x,y] = 0,0 t = test() for line in sys.stdin: a = line.split(';') a.pop() for value in a: if t.judge(value): x += t.x_change y += t.y_change print(str(x)+','+str(y)) if __name__=='__main__': main()