Cada célula de um autômato celular semelhante à vida precisa apenas de um bit para representá-lo, pois só pode estar vivo ou morto. Isso significa que existem apenas duas cores; muito chato.
Imagens normais têm 24 bits por pixel (8 em cada um dos RGB). Isso significa que, em uma imagem normal com pixels como células, você pode simular 24 jogos reais ao mesmo tempo!
Desafio
Sua tarefa é escrever um programa que aplicará uma geração das regras de um autômato celular realista a uma imagem de profundidade de 24 bits (em qualquer formato conhecido que você queira) e produzir a imagem resultante.
Cada uma das 24 camadas usará o mesmo conjunto de regras realista, estritamente dentro de sua própria camada. As 24 camadas não interagem umas com as outras.
Além disso
- Zeros são células mortas e outras são células vivas.
- As condições de contorno são periódicas (formando um toro).
- Quaisquer dimensões da imagem devem funcionar.
Entrada / Saída
Seu programa precisa receber 3 argumentos, via stdin ou linha de comando (ou o equivalente mais próximo do seu idioma):
- O nome do arquivo de imagem de entrada.
- Uma sequência de dígitos de 0 a 8 em ordem crescente que indica quando novas células nascem:
- Se o dígito d está na corda, em seguida, as células mortas ganham vida quando eles têm d vizinhos vivos.
- Exemplo:
3
é Vida normal - Células mortas com exatamente 3 vizinhos vivos ganham vida.
- Uma sequência de dígitos de 0 a 8 em ordem crescente que indica quando as células existentes sobrevivem:
- Se o dígito d estiver na cadeia, as células vivas com d vizinhos vivos sobreviverão até a próxima geração, caso contrário, elas morrerão.
- Exemplo:
23
é normal Vida - Somente células com exatamente 2 ou 3 vizinhos sobrevivem à próxima rodada.
Observe que o bairro de Moore é sempre usado. Leia isto ou isto para obter mais informações sobre o que define com precisão um autômato real e muitos conjuntos de regras interessantes.
A imagem de saída de uma geração depois deve ser exibida ou salva como out.png
( bmp
ou o que seja).
Submissão
O código mais curto em bytes vence.
Você está exigido para incluir pelo menos uma imagem de teste e suas três gerações subseqüentes imediatos para algum conjunto de regras não-trivial. Use seu avatar e as regras normais da vida se você não conseguir pensar em nada melhor.
Se você quiser, pode usar esta pistola Gosper Glider onde os únicos bits vivos estão na camada verde 128 (é certo que funcionará na vida normal):
A publicação de sequências interessantes ou mesmo animações é altamente recomendável.