zoukankan      html  css  js  c++  java
  • python计算登山队最远坐标

    总部为(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)
  • 相关阅读:
    POJ 1002 487-3279
    Sicily 1732 Alice and Bob (二进制最大公约数)
    左右linuxserver自己主动重启过程监控和简单的解决方案
    php禁用一些重要功能
    JAVA于Get和Post差异请求
    小强HTML5手机发展之路(52)——jquerymobile触摸互动
    《剑指offer》 相应 在线测试地址
    winform 实现选择的城市名单
    linux-ubuntu关闭防火墙
    445port入侵具体解释
  • 原文地址:https://www.cnblogs.com/lag1/p/14062850.html
Copyright © 2011-2022 走看看