搜索图样与规则 - AlephAlpha/LifeFind GitHub Wiki

SearchPatternLifeFind 函数也可以在不指定规则的情况下搜索图样。这一功能还在试验中,速度特别慢,可能有一堆 bug。

为搜索未知的规则,只需设置选项 "Rule" -> ""。注意:若省略 "Rule" 选项,搜索的将是默认的规则(一般来说是生命游戏),而非未知的规则。

用法和普通的搜索图样差不多。此时 SearchPattern 函数除了会以三维数组的形式输出图样之外,还会输出一个列表;这个列表由 "B0""S2e" 这样的字符串组成,表示规则中涉及到的邻域的名称。可以用 ToRuleString 函数来把它们合并成一个规则名称。使用 LifeFind 函数的话,输出的规则名称正是用 ToRuleString 得到的。

注意由 ToRuleString 产生的规则名称是没经过简化的,会把 "B3/S23" 写成 "B3aceijknqry/S2aceikn3aceijknqry"

比如说,要搜索未知规则中大小不超过 5×5,周期为 6,速度为 (2,1)c/6 的骑士飞船,只需要:

LifeFind[5, 5, 6, 2, 1, "Rule" -> ""]

对图样的搜索是随机的,但输出的规则一般是这个图样所满足的最简单的规则。

在设置了 "Rule" -> "" 的情况下,SearchPatternLifeFind 函数还支持以下的选项:

"Hexagonal"

此选项默认为 False。当设为 True 时,在六边形的规则中搜索。

"Totalistic"

此选项默认为 False。当设为 True 时,在 totalistic 的规则(即原本的 Life-like 规则)中搜索。

"Generations"

此选项默认为 2。当设为大于 2 的自然数 n 时,在有 n 种状态的 Generations 规则中搜索。和搜索图样时一样,显示的结果可能会不完整,搜索范围之外可能还有“正在死亡”的细胞。也不支持搜索非周期性的图样。

"KnownRules"

此选项用于指定已知的规则,其值是一个关联列表,和 PatternRules 函数的输出结果一样。比如说,<|"B0" -> False, "B3a" -> True, "S4k" -> False|> 表示规则中必须有 B3a,不能有 B0S4k,其它的项则可有可无。

除非在此选项中设置 "B0" -> True,否则只在没有 B0 的规则中搜索。

⚠️ **GitHub.com Fallback** ⚠️