计算超立方体中的坐标数

时间:2011-08-13 09:30:27

标签: algorithm math

在N维网格中,单元的坐标表示为X1,X2,...,XN。任何具有负坐标的细胞都是白色的。原始单元格(具有全零坐标的单元格)被着色为黑色。 (X1,X2,...,XN)中单元格的颜色取决于具有坐标的N个单元格(X1-1,X2,...,XN),(X1,X2-1,... ,XN),....,(X1,X2,...,XN-1)。当且仅当这些N个坐标中的黑色单元的数量是偶数时,该单元被着色为白色,否则该单元被着色为黑色。

现在,给出子超立方体的起始和结束坐标。所有坐标都将是查询完成的非负整数。我们要计算这个子超立方体中有多少个超细胞是黑色的?

请建议我提示,参考或任何可以帮助我解决它的事情。

2 个答案:

答案 0 :(得分:1)

强力算法:

fill the hypercube (the needed part) with value 'unknown'.
color[00000] = 1  #black

sum = 0
for each cell in sub-hypercube:
   sum += getcolor(cell)
   return sum

getcolor(cell):
   if color[cell] == unknown
      c = 0  #white
      for each neighbour cell in decreasing direction within non-negative boundary:
          c = c xor getcolor(neighbour)
      color[cell] = c
   return color[cell]

答案 1 :(得分:1)

此规则会产生众所周知的分形 - The Sierpinski triangle

以下是2D中的图像:

enter image description here