编写程序,实现一个自定义函数,计算两个序列中任意两点距离的最小值和最大值, 以及距离最近和最远的两对点在点列中的序号。用202115221011和110122511202的各位分别作为点的横坐标和纵坐标构造点列,对设计的点列类及其功能进行测试。
时间: 2024-09-24 07:05:11 浏览: 38
为了编写一个程序,我们首先需要创建一个名为Point的类,用于表示二维空间中的点,并包含横坐标(x)和纵坐标(y)属性。然后我们将定义一个PointList类,它将维护一系列点并提供计算距离、找出最短和最长距离以及对应点的序号的方法。
```python
class Point:
def __init__(self, x, y):
self.x = int(x)
self.y = int(y)
class PointList:
def __init__(self, points):
self.points = [Point(*point.split('')) for point in points.split(', ')]
def calculate_distances(self):
distances = [(i, j, self.distance(i, j)) for i in range(len(self.points)) for j in range(i+1, len(self.points))]
return min(distances), max(distances)
def distance(self, index1, index2):
p1, p2 = self.points[index1], self.points[index2]
return ((p1.x - p2.x)**2 + (p1.y - p2.y)**2) ** 0.5
def find_nearest_and_furthest(self):
sorted_distances = sorted([(index, self.distance(index, i)) for i, index in enumerate(self.points)])
return sorted_distances[0][1:], sorted_distances[-1][1:]
# 测试点列类
test_points = '202115221011, 110122511202'
point_list = PointList(test_points)
min_distance, max_distance = point_list.calculate_distances()
nearest_distance, furthest_distance = point_list.find_nearest_and_furthest()
print(f"Minimum distance: {min_distance}, between points at indices {nearest_distance}")
print(f"Maximum distance: {max_distance}, between points at indices {furthest_distance}")
```
这个程序首先初始化了一个PointList实例,传入给定的点的字符串表示。接下来,我们计算所有点对之间的距离,找到最小和最大值,并返回对应的点的序号。最后,我们打印出最接近和最远离的两对点的距离及它们在点列表中的位置。
阅读全文