文章目录
洞穴探险
- 探险过程中,记录器会不定期记录自身的坐标位置,在记录的间隙中也会记录其他数据。现在需要获取某个成员在探险过程中相对于探险队总部的最远的足迹位置;
- 坐标的数据格式为(x,y),如(1,2)、(100,200),其中0<x,y<1000;同时存在非法坐标,如(01,1)(1,01)(0,100)属于非法坐标;
- 探险总部的坐标为(0,0),某位置相对于总部的距离为: x 2 + y 2 x^2 + y^2 x2+y2;
- 若两个坐标的相对总部的距离相同,则第一次达到的坐标为最远的足迹;
- 若记录器记录的坐标都不合法,输出总部坐标(0,0);
输入描述:
字符串,表示记录的数据;
输出描述:
字符串,最远足迹的坐标
示例1
输入:
ferg(3,10)a13fdsf3(3,4)f2r3rfasf(5,10)
输出:
(5,10)
示例2
输入:
asfefaweawfaw(0,1)fe
输出:
(0,0)
python实现:
- 简单的字符串处理
def is_valid(temp):
x, y = temp.split(",")
x = x.strip()[1:]
y = y.strip()[:-1]
if x.startswith('0') or y.startswith('0'):
return None
x = float(x)
y = float(y)
if (not 0 < x < 1000) or (not 0 < y < 1000):
return None
return x * x + y * y
s = input().strip()
n = len(s)
# 记录当前最远的坐标
tgt_coord = ""
max_dist = -1
flag = False # 标记括号的开始
temp = ""
for i in range(n):
if s[i] == "(":
flag = True
elif s[i] == ")":
temp += s[i]
flag = False
# 当前坐标有效时才计算距离
valid_dist = is_valid(temp)
if valid_dist is not None and valid_dist > max_dist:
max_dist = valid_dist
tgt_coord = temp
temp = ""
if flag:
temp += s[i]
if tgt_coord:
print(tgt_coord)
else:
print("(0,0)")
31万+

被折叠的 条评论
为什么被折叠?



