Algorithm 2D PHP模式创建器Altgorithm

Algorithm 2D PHP模式创建器Altgorithm,algorithm,design-patterns,Algorithm,Design Patterns,我正在寻找一种算法来帮助我根据规则构建2D模式。我的想法是,我可以使用一个给定的参数站点编写一个脚本,它将返回一个随机的二维序列,最大长度为给定的长度 我的计划是使用它根据规则生成图像模式。像游戏级别的图像分形或精灵之类的东西可能会用到这一点 例如,假设您可以使用A、B、C和D来创建模式。规则是C和A永远不能相邻,D总是跟在C后面。接下来,假设我想要一个4x4大小的图案。结果可能是以下遵守所有规则的结果 A B C D B B B B C D B B C D C D 是否有任何现有的库可以进行

我正在寻找一种算法来帮助我根据规则构建2D模式。我的想法是,我可以使用一个给定的参数站点编写一个脚本,它将返回一个随机的二维序列,最大长度为给定的长度

我的计划是使用它根据规则生成图像模式。像游戏级别的图像分形或精灵之类的东西可能会用到这一点

例如,假设您可以使用A、B、C和D来创建模式。规则是C和A永远不能相邻,D总是跟在C后面。接下来,假设我想要一个4x4大小的图案。结果可能是以下遵守所有规则的结果

A B C D
B B B B
C D B B
C D C D

是否有任何现有的库可以进行这样的计算?有什么数学公式我可以读懂吗?

虽然计算运行时效率很低,但它是解决此类问题的常用算法


它遵循一个简单的模式,如果编写正确,您可以轻松地将规则集替换到其中。

定义您的规则数据结构;i、 例如,定义规则可以封装的操作集,并定义可以完成的可用交叉引用。完成此操作后,您应该更清楚地了解将这些规则应用于潜在结果集的算法类型。

假设您的规则限制为“允许X类型的Y类型立即位于其左/右/上/下”您可能会遇到生成可能的模式在计算上很困难的情况。看一看(一个很好的来源是Grunbaum和Shephard的《瓷砖和图案》一书),你会发现有了州规则集,你可以定义Wang瓷砖集。适当的集合是图灵完备的


对于小矩形或您的规则集,这可能只是学术兴趣。如其他地方所提到的,回溯方法可能适用于规则集——在这种情况下,您可能需要考虑适当的启发式算法,以便将新的组件添加到网格中。同样,根据您的规则集,其他方法也可能有效。例如,如果您的规则集允许许多解决方案,那么在尝试填补剩余的空白之前,您可以通过将许多项随机分配到网格中,这可能会有很长的路要走。

什么样的“规则”?这些“规则”的格式是什么?只是关于当前符号北/东/南/西的基本规则。我想对X个空格内的符号的支持也会很好(但可能会慢很多)。我发现这很好。似乎也有很多。对于这个主题,似乎有很多提及,所以我发现了一个。我发现了一个使用PHP和JavaScript生成。