【问题标题】:How to compute a map for ALL houses in map to show the closest store如何计算地图中所有房屋的地图以显示最近的商店
【发布时间】:2021-10-24 06:07:45
【问题描述】:

问题要求提供一张地图,该地图可以将附近的披萨店显示到地图上的每个位置,并用店内披萨的顺序标记它们,因此地图看起来像 Voronoi 图。

这是问题。

在一个叫雷古拉维尔的小镇上,所有住在那里的人都有很奇怪的习惯。所有的建筑物都有中心 在结构良好的矩形网格上。镇长在镇的最西北角,他的 房子坐标是(0,0)。并且镇上的每个建筑物都有坐标(i,j),表明他的房子是ikm 对于ij,南和j 距离市长家以东公里是整数,对于某些情况,0 <= i < r0 <= j < c 整数 rc

一个新品牌的比萨来到镇上!他们在镇上的一些建筑物中为一些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_matrixm_tight_print

编写一个函数 pd_map(r,c,sites) 来计算 Regulaville 中所有房屋的地图,以显示最近的披萨 每个房子的store number,其中rc分别是地图的高度和宽度,sites是一个列表 比萨店坐标。 每个房屋的位置应由坐标(i,j) 表示,例如0 <= i < r0 <= 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


【解决方案1】:
  1. 仅当列表中有重复值时,该函数才会返回一些内容。尝试把两个store放在同一个地方(不管不允许,python都不知道),你会得到每个单元格上的行号

【讨论】:

  • 谢谢,不好意思,我不太明白,能不能详细解释一下?
猜你喜欢
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多