Dado o estado de uma grade quadrada do Jogo da Vida, determine se ela poderia ter evoluído de qualquer estado anterior ou apenas poderia ter sido criada. Ou seja, identifique se o estado é um estado "Jardim do Éden" .
Entrada
Uma grade quadrada de estados, com 1 indicando "vivo" e 0 indicando "morto". Você pode escolher dois símbolos distintos, em vez de 0 e 1, se desejar.
O comprimento lateral da grade não será zero, mas pode ser qualquer número natural 1 <= N <= 20.
Qualquer uma ou todas as células fora da grade de entrada podem estar ativas nesta geração, e qualquer uma ou todas elas podem estar ativas na geração anterior. O universo a ser considerado é infinito, portanto não há condições de contorno. As arestas da entrada não são as arestas do universo. Especificamente, a grade não quebra.
A entrada pode estar na forma de uma sequência delimitada por linha ou uma única sequência. Se desejar, você pode considerar o comprimento lateral ou a área da grade como uma entrada adicional (antes ou depois da grade).
Formatos de entrada aceitáveis:
010,101,010
010101010
010
101
010
3 010101010
Resultado
"Criado" se não houver um estado anterior possível (incluindo estados maiores que a grade de entrada) que levaria ao estado de entrada na próxima geração.
"Evoluiu" se existir pelo menos um estado anterior possível (incluindo estados maiores que a grade de entrada) que levaria ao estado de entrada na próxima geração.
Você pode usar duas seqüências ou números distinguíveis em vez de "Criado" e "Evoluído", se desejar.
Observe que o possível estado anterior não precisa ser diferente da entrada. Se um estado se apresenta como a próxima geração, deve ser considerado evoluído.
Casos de teste
010
101
010 Evolved
0101110100
0010101001
1011100110
0101111101
1001001111
1111001001
1011111010
0110011101
1001010100
0010111010 Created
O caso de teste criado foi retirado da página Game of Life, de Achim Flammenkamp .
Nota
Agradeço à Trichoplax por escrever este desafio e o adotei daqui
m
-by-n
, se eu testar todos os possíveis2^(m*n)
estados iniciais da complexidade programa vai ser grande, mas resolve o problema, apenas verificar se o resultado corresponde à entrada