我看到的是一个solution到Advent 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’这行代码很容易编写/思考,但我不认为值得增加复杂性(没有双关语的意思).
有人能解释一下为什么将网格坐标存储为复数很有用吗?