在n*n网格上生成路径

hsz*_*hsz 8 algorithm multidimensional-array

我有n*n网格,例如n=10.我必须用黑色和白色元素填充它.每个黑色元素都必须有一个,两个或三个黑色邻居.不允许包含具有四个或零邻居的黑色元素.

我该如何构建这种网格?

编辑:

更具体地说,它是二维数组,例如有两个for循环:

n = 10
array = [][];
for ( x = 0; x < n; x++ ) {
    for ( y = 0; y < n; y++ ) {
        array[x][y] = rand(black/white)
    }
}
Run Code Online (Sandbox Code Playgroud)

这个伪代码构建了一些类似于:

当前

而我的期望是:

预期

Nic*_*uet 5

显然,您正在尝试在写入网格上生成“黑色路径”形状。

因此,让我们开始吧。

  • 从白色网格开始。
  • 随机在其上放置一些乌龟。
  • 然后,当您的网格不符合正确的白/黑单元比时,请执行以下操作
    • 沿随机方向将每只海龟移动一个单元并涂成黑色,除非这样做违反了“不超过三个黑色邻居”的规则。