假设我要跟踪网格中单元的状态。假设网格的尺寸为"${ages.random()}"
。我可以简单地创建一个长度为m x n
的向量,并使用该向量跟踪单元状态。在这种情况下,网格中的每个点(即2D)将映射到向量(1D)中的元素。
我以前使用过的一种方法是这样的:
m*n
我的问题是这样
当网格尺寸未知或网格无限时,是否有一种如上所述的2D-> 1D映射的方法?
答案 0 :(得分:2)
是的,存在自然数从2D到1D的映射,称为Pairing functions。 例如,Cantor配对功能:
defun 2d->1d (x, y):
return (1 / 2) * (x + y) * (x + y + 1) + y;
有关反向功能,请参见上面的链接,它要复杂一些。