a tua abordagem tem um problema muito grave.
vamos imaginar que o "mundo" do jogo não é infinito mas é 3X3 com o seguinte esquema inicial:
+-+-+-+
|X| | |
+-+-+-+
| |X| |
+-+-+-+
|X| | |
+-+-+-+
como podes ver, todas as células deverao morrer no próximo passo, no entanto, existe uma que deverá "voltar à vida": a 1x2, porque tem exactamente 3 células adjacentes vivas.
no entanto, o teu código, como estás a alterar o estado sequencialmente pelo tabuleiro, ao marcares imediatamente a célula 1x1 como morta, o processo de avaliação da célula 1x2 mão irá tornar a célula viva, porque a 1x1 encontrasse agora "morta".
como estas limitado aos elementos da linguagem descritos, o que deverás fazer é ter dois tabuleiros : o actual e o seguinte, onde quando avaliar os actual, "escreves" no seguinte o estado que irá ter no passo seguinte. deste modo prevines o problema que descrevi anteriormente
↧