给定方形的“生命游戏”网格的状态,确定它是否可以从任何先前的状态演变而来,或者只能被创建。即,确定该状态是否为“伊甸园”状态。
输入项
状态的正方形网格,其中1表示“活动”,0表示“死”。如果愿意,可以选择两个可区别的符号,而不是0和1。
网格的边长将不为零,但可以为任何自然数1 <= N <= 20。
输入网格外部的任何或所有单元格可能在此世代中仍处于活动状态,而它们中的任何或全部可能在上一代中已处于活动状态。要考虑的宇宙是无限的,因此没有边界条件。输入的边不是Universe的边。具体来说,网格不环绕。
输入可以采用行分隔字符串或单个字符串的形式。如果需要,可以将边长或网格面积作为附加输入(在网格之前或之后)。
可接受的输入格式:
010,101,010
010101010
010
101
010
3 010101010
输出量
如果没有可能导致下一代输入状态的先前状态(包括大于输入网格的状态),则为“已创建”。
如果存在至少一个可能导致下一代输入状态的先前状态(包括大于输入网格的状态),则为“已演化”。
如果愿意,可以使用任何两个可区分的字符串或数字来代替“ Created”和“ Evolved”。
注意,可能的先前状态不必与输入区分开。如果一个国家拥有自己作为下一代,那么它就应该被认为是进化的。
测试用例
010
101
010 Evolved
0101110100
0010101001
1011100110
0101111101
1001001111
1111001001
1011111010
0110011101
1001010100
0010111010 Created
创建的测试用例取自Achim Flammenkamp的《生命游戏页面》。
注意
感谢trichoplax编写了这个挑战,我从这里接受了它
m
by- 的输入n
,如果我测试所有可能的2^(m*n)
初始状态,则程序复杂度会很大,但是它仅通过检查结果是否与输入相匹配即可解决问题