Dato lo stato di una griglia quadrata di Game of Life, determina se potrebbe essersi evoluto da uno stato precedente o se fosse stato creato. Cioè, identificare se lo stato è uno stato "Giardino dell'Eden" .
Ingresso
Una griglia quadrata di stati, con 1 che indica "vivo" e 0 che indica "morto". Se lo desideri, puoi scegliere due simboli distinguibili anziché 0 e 1.
La lunghezza laterale della griglia non sarà zero, ma può essere qualsiasi numero naturale 1 <= N <= 20.
Una o tutte le celle esterne alla griglia di input potrebbero essere attive in questa generazione e alcune o tutte potrebbero essere state attive nella generazione precedente. L'universo da considerare è infinito, quindi non ci sono condizioni al contorno. I bordi dell'input non sono i bordi dell'universo. In particolare, la griglia non si avvolge.
L'input può essere nella forma di una stringa delimitata da righe o di una singola stringa. Se lo desideri, puoi prendere la lunghezza laterale o l'area della griglia come input aggiuntivo (prima o dopo la griglia).
Formati di input accettabili:
010,101,010
010101010
010
101
010
3 010101010
Produzione
"Creato" se non è possibile uno stato precedente (inclusi stati più grandi della griglia di input) che porterebbe allo stato di input sulla generazione successiva.
"Evoluto" se esiste almeno un possibile stato precedente (inclusi stati maggiori della griglia di input) che porterebbe allo stato di input sulla generazione successiva.
Se lo desideri, puoi utilizzare due stringhe o numeri distinguibili anziché "Creato" e "Evoluto".
Si noti che il possibile stato precedente non deve essere distinto dall'input. Se uno stato ha se stesso come la prossima generazione, allora dovrebbe essere considerato evoluto.
Casi test
010
101
010 Evolved
0101110100
0010101001
1011100110
0101111101
1001001111
1111001001
1011111010
0110011101
1001010100
0010111010 Created
Il test case creato è tratto dalla pagina Game of Life di Achim Flammenkamp .
Nota
Grazie a trichoplax per aver scritto questa sfida e l'ho adottata da qui
m
-by-n
, se provo tutti i possibili2^(m*n)
stati iniziali la complessità del programma sarà grande, ma risolve il problema semplicemente controllando che il risultato corrisponda all'input