【发布时间】:2021-10-24 06:07:45
【问题描述】:
问题要求提供一张地图,该地图可以将附近的披萨店显示到地图上的每个位置,并用店内披萨的顺序标记它们,因此地图看起来像 Voronoi 图。
这是问题。
在一个叫雷古拉维尔的小镇上,所有住在那里的人都有很奇怪的习惯。所有的建筑物都有中心 在结构良好的矩形网格上。镇长在镇的最西北角,他的 房子坐标是
(0,0)。并且镇上的每个建筑物都有坐标(i,j),表明他的房子是ikm 对于i和j,南和j距离市长家以东公里是整数,对于某些情况,0 <= i < r和0 <= j < c整数r和c。一个新品牌的比萨来到镇上!他们在镇上的一些建筑物中为一些
n 10开设了n商店。我们存储 列表中披萨店的坐标。例如,一个列表[[10,20],[30,20],[40,50]]表示三个披萨店,其中 Store 0 位于(10,20),Store 1 位于(30,20),Store 2 位于(40,50)1 . (不知何故 比萨店的大老板会编程,他也从 0 开始数。)没有两家比萨店 在同一个位置。 Regulaville 的所有人都只在自己家中通过叫外卖的方式吃披萨,而所有的 商店将通过直接从商店飞到目的地的无人机运送披萨。 为了尽量减少无人机使用的时间和电力,市长下令每个家庭只能订购 从最近的商店购买比萨饼,除非有不止一家商店与该家的最短距离相同。为了 例如,对于上例中提到的三个披萨店,坐标(40,20)的房子将是 离Store 1最近,最近距离10公里。商店 0 和 2 将有超过 1 个商店具有相同的距离 30 > 10 公里。为您提供了两个实用函数create_zero_matrix和m_tight_print。编写一个函数
pd_map(r,c,sites)来计算 Regulaville 中所有房屋的地图,以显示最近的披萨 每个房子的store number,其中r和c分别是地图的高度和宽度,sites是一个列表 比萨店坐标。 每个房屋的位置应由坐标(i,j)表示,例如0 <= i < r和0 <= j < c。 您可以假设比萨店的数量将小于或等于 10 及其对应的商店编号 (即标签)将从 0 到 9。下面显示了函数pd_map()的示例用法。def create_zero_matrix(n,m): return [[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[0])): line += str(m[i][j]) print(line)
这是我的代码,我想定义一个函数来计算每个位置的关闭存储并首先返回相关数字。然后使用此函数计算地图上的所有位置。但是,结果总是返回“none”
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
【问题讨论】:
-
我已经删除了 [r] 代码标签,因为问题和代码示例似乎是特定于 python 的。
-
看来是你让你的猫发挥你的作用。对猫来说还不错
-
顺便说一句 `res.index(min(res))` 行什么都不做
标签: python