Com este exercício pretende-se que implementem um jogo da vida unidimensional com regras de evolução fixas, codificadas da seguinte maneira:
regra(0,0,0).
regra(0,1,1).
regra(1,0,1).
regra(1,1,0).
Passamos a explicar. Convencionamos que 0 representa uma célula morta enquanto 1 representa uma célula viva. Uma colónia de seres unicelulares será então representada por uma lista de zeros e uns. Por exemplo,
[0,1,0,1,1,0,1,0,1,0,0,1,1,0]
Com as regras de evolução, vamos poder obter as gerações que se seguem à colónia inicial. As regras apresentadas acima, significam que:
Pretendemos:
?- proxima_geracao([1,0,0,0,1,1],L).
L = [1,0,0,1,0,1]
?- proxima_geracao([1,1,1,1,0],L).
L = [0,0,0,1,0]
?- jogo_vida(2,[1,0,1],L).
L = [[1,1,1],[0,0,1]]