O Jogo da Vida e Fadiga de Stewie é bastante semelhante ao Jogo da Vida de Conway, mais famoso .
O universo do Jogo da Vida e Fadiga de Stewie (GoLF) é uma grade ortogonal bidimensional infinita de células quadradas, cada uma das quais está em um dos três estados possíveis: vivo, morto ou cansado. Cada célula interage com seus oito vizinhos, que são as células que são horizontal, vertical ou diagonalmente adjacentes. A cada etapa, ocorrem as seguintes transições:
- Qualquer célula viva com menos de dois vizinhos vivos morre, como se causada por subpopulação.
- Qualquer célula viva com dois ou três vizinhos vivos vive para a próxima geração.
- Qualquer célula viva com mais de três vizinhos vivos morre, como se por superpopulação.
- Qualquer célula morta com exatamente três vizinhos vivos se torna uma célula viva, como se fosse reprodução.
- Qualquer célula que esteja viva por duas gerações consecutivas morre, como se por fadiga. Não pode despertar para a vida novamente até a próxima geração
- Qualquer célula que esteja fora dos limites da grade de entrada está morta, como se tivesse caído de um penhasco.
Desafio:
Seu desafio é pegar uma grade de dimensões n-por-m representando o estado inicial de um GoLF e um número inteiro p , e gerar o estado do jogo após p gerações.
Regras:
- Os formatos de entrada e saída são opcionais, mas as grades de entrada / saída devem ter a mesma representação
- Você pode escolher qualquer símbolo imprimível para representar células vivas e mortas (usarei
1
para células vivas e0
células mortas). - Você pode escolher se possui 0 ou 1 indexado. Nos exemplos,
p=1
significa o estado após uma etapa. - O código mais curto em cada idioma vence
- Função interna para automação celular é permitida
Casos de teste:
Nos exemplos, incluí apenas a grade de entrada na entrada, não p . Eu forneci saídas para vários valores de p . Você deve emitir apenas a grade que acompanha uma determinada entrada p .
Input:
0 0 0 0 0
0 0 1 0 0
0 0 1 0 0
0 0 1 0 0
0 0 0 0 0
--- Output ---
p = 1
0 0 0 0 0
0 0 0 0 0
0 1 1 1 0
0 0 0 0 0
0 0 0 0 0
p = 2
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
p = 3 -> All dead
---
Input:
0 1 0 0 0 0
0 0 1 0 0 0
1 1 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
--- Output ---
p = 1
0 0 0 0 0 0
1 0 1 0 0 0
0 1 1 0 0 0
0 1 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
p = 2
0 0 0 0 0 0
0 0 0 0 0 0
1 0 0 0 0 0
0 1 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
p = 3
0 0 0 0 0 0
0 0 0 0 0 0
0 1 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
p = 4 -> All dead
Input
0 1 1 0 1 1 0
1 1 0 1 1 1 1
0 1 0 0 0 1 0
0 0 0 1 1 0 1
1 0 0 1 0 1 1
0 0 1 1 0 1 1
1 1 0 0 0 0 1
--- Output ---
p = 1
1 1 1 0 0 0 1
1 0 0 1 0 0 1
1 1 0 0 0 0 0
0 0 1 1 0 0 1
0 0 0 0 0 0 0
1 0 1 1 0 0 0
0 1 1 0 0 1 1
p = 2
1 0 0 0 0 0 0
0 0 0 0 0 0 0
1 0 0 1 0 0 0
0 1 1 0 0 0 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
0 0 1 1 0 0 0
p = 3
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 1 0 0 0 0
1 1 0 0 0 0 0
0 1 1 0 0 0 0
0 0 1 0 0 0 0
0 0 0 0 0 0 0
p = 4
0 0 0 0 0 0 0
0 0 0 0 0 0 0
1 1 1 0 0 0 0
1 0 0 0 0 0 0
1 0 1 0 0 0 0
0 1 1 0 0 0 0
0 0 0 0 0 0 0
p = 5
0 0 0 0 0 0 0
0 1 0 0 0 0 0
1 0 0 0 0 0 0
0 0 1 0 0 0 0
1 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
p = 6
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 0 0 0 0 0
0 1 0 0 0 0 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
p = 7
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
1 1 1 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
p = 8
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
p = 9 -> All dead
Sim, estou ciente de que todas as sementes iniciais não terminarão em todas as células mortas.