Étant donné l'état d'une grille Game of Life carrée, déterminez si elle aurait pu évoluer à partir de n'importe quel état précédent, ou aurait seulement pu être créée. Autrement dit, déterminez si l'État est un État "Jardin d'Eden" .
Contribution
Une grille carrée d'états, 1 indiquant "vivant" et 0 indiquant "mort". Vous pouvez choisir deux symboles distincts au lieu de 0 et 1 si vous le souhaitez.
La longueur du côté de la grille ne sera pas nulle, mais peut être n'importe quel nombre naturel 1 <= N <= 20.
Une ou toutes les cellules en dehors de la grille d'entrée peuvent être vivantes à cette génération, et toutes ou toutes peuvent avoir été vivantes dans la génération précédente. L'univers à considérer est infini, il n'y a donc pas de conditions aux limites. Les bords de l'entrée ne sont pas les bords de l'univers. Plus précisément, la grille ne s'enroule pas.
L'entrée peut être sous la forme d'une chaîne délimitée par des lignes ou d'une chaîne unique. Si vous le souhaitez, vous pouvez prendre la longueur du côté ou la zone de la grille comme entrée supplémentaire (avant ou après la grille).
Formats d'entrée acceptables:
010,101,010
010101010
010
101
010
3 010101010
Production
"Créé" s'il n'y a aucun état précédent possible (y compris des états plus grands que la grille d'entrée) qui conduirait à l'état d'entrée sur la prochaine génération.
"Evolved" s'il existe au moins un état précédent possible (y compris des états plus grands que la grille d'entrée) qui conduirait à l'état d'entrée sur la prochaine génération.
Vous pouvez utiliser deux chaînes ou nombres distincts au lieu de "Créé" et "Évolué" si vous le souhaitez.
Notez que l'état précédent possible n'a pas besoin d'être distinct de l'entrée. Si un État a lui-même la prochaine génération, alors il doit être considéré comme évolué.
Cas de test
010
101
010 Evolved
0101110100
0010101001
1011100110
0101111101
1001001111
1111001001
1011111010
0110011101
1001010100
0010111010 Created
Le scénario de test créé est extrait de la page Game of Life d' Achim Flammenkamp .
Remarque
Merci à trichoplax d'avoir écrit ce défi et je l'ai adopté à partir d' ici
m
-par-n
, si je teste tous les2^(m*n)
états initiaux possibles , la complexité du programme sera grande, mais cela résout le problème en vérifiant simplement si le résultat correspond à l'entrée