我看到的是一个solutionAdvent of Code puzzle的数字,它将坐标存储为复数:

 heightmap = {
    complex(x, y): c
        for y, ln in enumerate(sys.stdin.read().strip().split("\n"))
        for x, c in enumerate(ln)
}

然后稍后访问它们,如下所示:

for xy, c in heightmap.items():
    for d in (1, -1, 1j, -1j):
        if ord(heightmap.get(xy + d, "{")) <= ord(c) + 1:
            G.add_edge(xy, xy + d)

我可以看到这段代码使得‘Get Neighbors’这行代码很容易编写/思考,但我不认为值得增加复杂性(没有双关语的意思).

有人能解释一下为什么将网格坐标存储为复数很有用吗?

推荐答案

是的,因为这很容易/不那么容易写和思考.也意味着打字错误的机会减少:-)

自从我看到别人这么做以来,我已经这么做很多年了.通常甚至不显式地输入三角洲,而是calculating个.也就是说,不是

for d in (1, -1, 1j, -1j):
    use(z + d)

(A)下列事项:

for i in range(4):
    use(z + 1j**i)

使用单独的x和y变量时可能的替代方案:

for dx, dy in ((1, 0), (0, 1), (-1, 0), (0, -1)):
    use(x+dx, y+dy)
for x2, y2 in ((x+1, y), (x, y+1), (x-1, y), (x, y-1)):
    use(x2, y2)

埃尔马赫格德,太令人沮丧了.事实上,我在写这些时确实犯了几个打字错误:-)

(Attempt This Online!分测试)

Python相关问答推荐

Odoo -无法比较使用@api.depends设置计算字段的日期

配置Sweetviz以分析对象类型列,而无需转换

理解Python的二分库:澄清bisect_left的使用

Pandas 第二小值有条件

SQLGory-file包FilField不允许提供自定义文件名,自动将文件保存为未命名

在线条上绘制表面

如何在python polars中停止otherate(),当使用when()表达式时?

如何在solve()之后获得症状上的等式的值

Streamlit应用程序中的Plotly条形图中未正确显示Y轴刻度

NumPy中条件嵌套for循环的向量化

Pandas—在数据透视表中占总数的百分比

Django—cte给出:QuerySet对象没有属性with_cte''''

Python全局变量递归得到不同的结果

如何排除prefecture_related中查询集为空的实例?

OpenCV轮廓.很难找到给定图像的所需轮廓

具有相同图例 colored颜色 和标签的堆叠子图

干燥化与列姆化的比较

Django Table—如果项目是唯一的,则单行

如何使用matplotlib查看并列直方图

如何根据一定条件生成段id