python計算登山隊最遠座標
阿新 • • 發佈:2020-11-30
總部為(0,0),輸入字元以及座標,求出最遠座標且最先到達的座標
import re,math s = "abcccc(3,10)c5,13d(1$f(6,11)sdf(510,200)adas2d()(011,6)" #原始字串 #print(re.findall(r'[^()a-z]+', s)) pattern = re.compile(r'\(([0-9]{1,3},[0-9]{1,3})\)') #提取座標正則表示式物件 result = re.findall(pattern,s) #查詢整個字串,得出座標列表 f_result={} #判斷是否為合格的十進位制整數,且大於0小於500 def isDigit(str1):if len(str1)==3: if str1[0]=='0': return False elif int(str1[0])>=5: return False else: return True if len(str1)==2: if str1[0]=='0': return False else: return True if len(str1)==1: if str1=='0': return False else: return True #遍歷得出的座標列表,求得他距離總部(0,0)的距離,距離為x^2+y^2,並儲存到字典f_result for i in result: i=i.split(',') if isDigit(i[0]) and isDigit(i[1]): f_result[','.join(i)]=math.pow(int(i[0]),2)+math.pow(int(i[1]),2) #求得最遠距離 a=max(f_result.values()) #最遠距離的距離和座標字典z_result=[] for i in f_result: if f_result[i]==a: z_result.append(i) #最遠距離下,x+y和與座標 he_result={} #如果最遠距離相等,判斷誰先到達,規則x+y for i in z_result: i=i.split(',') he_result[','.join(i)]=int(i[0])+int(i[1]) #求得和的最小值 b=min(he_result.values()) #遍歷,打印出最小和的座標 for i in he_result: if he_result[i]==b: print('('+i+')') #print(i,i[0],i[1],isDigit(i[0]),isDigit(i[1]),f_result,a,z_result,z_result[0],he_result)