这个问题要求提供一张地图,该地图可以将关闭的比萨饼店显示到地图上的每个位置,并用店内比萨饼的顺序来标记它们,因此地图看起来就像Voronoi图。
这就是问题所在。
在一个叫Regulaville的小镇上,所有住在那里的人都有着非常奇怪的习惯。所有的建筑物都以结构良好的矩形网格为中心。镇长在镇的最西北角,他的房屋坐标是
(0,0)。镇上的每一栋建筑都有坐标(i,j),表明他的房子在i公里以南,距离市长的房子j公里,i和j是整数,所以0 <= i < r和0 <= j < c代表一些整数,r和c。
一个新品牌的比萨饼来了!他们在城里的一些建筑里为一些n开了n 10商店。我们把比萨饼店的坐标存储在一个列表中。例如,[[10,20],[30,20],[40,50]]的列表表示三家披萨店,商店0在(10,20),商店1在(30,20),商店2在(40,50)1。(披萨店的大老板不知何故懂得编程,他也开始计算0。)同一地点没有两家比萨饼店。瑞格拉维尔所有的人都只在自己家里吃比萨饼,要求送货,所有商店都会用无人机运送披萨,这些无人机将直接从商店飞到目的地。为了减少无人机使用的时间和能量,市长命令每个家庭只能从最近的商店订购比萨饼,除非有多家商店,距离该家有同样的最小距离。例如,对于上面的例子中提到的三家比萨饼店,坐标(40,20)处的房子离商店1最近,距离10公里。商店0和2将有超过1家相同距离30 > 10公里的商店。为您提供了两个实用程序函数create_zero_matrix和m_tight_print。
编写一个函数pd_map(r,c,sites)来计算Regulaville中所有房屋的地图,以显示与每个房子最近的比萨饼店号,其中r和c分别是地图的高度和宽度,站点是比萨饼店坐标的列表。每个房子的位置应该用坐标(i,j)来表示,以便0 <= i < r和0 <= j < c。您可以假设比萨饼店的数量将小于或等于10,它们相应的存储号(即标签)将从0到9。下面显示了函数pd_map()的示例用法。
def create_zero_matrix(n,m):返回[0 for i in range(m) for j in range(n)] def m_tight_print(m):for i in range(len(m)):line = '‘for j in range(len(m)):line += str(mi) print(line)
这是我的代码,我想要定义一个函数来计算每个位置的关闭存储,并首先返回相关的数字。然后使用此函数计算地图上的所有位置。然而,结果总是返回“无”。
def pd_map(r,c,sites):
map1 = create_zero_matrix(r,c)
print (map1)
for i in range(0, r):
for j in range(0, c):
elem = map1[i][j]
def near_one(x,y,sites):
res = []
for n in range(len(sites)):
res.append(math.sqrt((x-sites[n][0])**2 + (y-sites[n][1])**2))
if res.count(min(res))==1:
res.index(min(res))
else:
return X
map2 = []
for i in range(0, r):
row = []
for j in range(0, c):
row.append(near_one(i,j,sites))
map2.append(row)
return map2发布于 2021-10-25 03:31:10
上得到行号。
https://stackoverflow.com/questions/69694258
复制相似问题