python 使用复数存储图形坐标有什么好处?

r1zk6ea1  于 2023-03-21  发布在  Python
关注(0)|答案(1)|浏览(86)

我正在查看将坐标存储为复数的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”这一行变得容易编写/思考,但我不认为它值得增加复杂性(没有双关语)。
有人能解释一下为什么把网格坐标存储为复数很有用吗?

wn9m85ua

wn9m85ua1#

是的,因为它很容易/更少的写作和思考。也意味着更少的错别字的机会:-)
我已经这样做了很多年了,自从我看到别人这样做以来。通常甚至不显式地输入增量,而是计算它们。也就是说,而不是

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

执行:

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

使用单独的x和y变量时的可能替代方案:
一个二个一个一个
Ermahgerd,太令人沮丧了。实际上我在写这些的时候确实犯了几个错别字:-)
Attempt This Online!测试)

相关问题