Jogo da Vida
Introdução
O Jogo da Vida
não é um jogo comum, com disputa e vencedores, mas sim um autômato
celular muito conhecido, que foi criado pelo matemático John Conway.
Há um diagrama cujas células podem estar vivas ou mortas e evoluem
segundo as seguintes regras:
- Uma célula viva com menos de dois vizinhos morre (solidão).
- Uma célula viva com mais de três vizinhos morre (superlotação).
- Uma célula com dois ou três vizinhos sobrevive para a próxima geração.
- Uma célula morta com exatamente três vizinhos renasce.
Implementação
Deve ser feita uma versão multithread do jogo da vida que não
precisa de mecanismos de sincronização como mutex locks ou
semáforos. Não deve ser utilizada espera ocupada.
- O grupo irá decidir como dividir o trabalho do tabuleiro
entre as várias threads.
- O código deverá permitir flexibidade para alteração do tamanho
do tabuleiro.
- O estado inicial pode ser escolhido aleatoriamente e/ou a entrada
de um estado inicial deve ser simples (via arquivo ou pela escolha do
usuário).
- A saída pode ser uma seqüência de matrizes em texto simples, ou você
pode utilizar bibliotecas como OpenGL ou NCurses. Neste caso, fique
atento para outros possíveis problemas de sincronização.
Entrega
Será no dia 17 de março.
Entregar por e-mail para godoy at dca dot fee dot unicamp dot br
Enviar o(s) arquivo(s) de implementação, um Makefile e um arquivo
texto com uma breve descrição das decisões tomadas pelo grupo. Se o
grupo utilizou alguma interface gráfica, especificar possíveis
dependências de pacotes externos.