Pesquisadores descobriram recentemente uma colônia de abelhas interessante que vive em um campo infinito de favo de mel:
Cada célula pode abrigar uma abelha ou não. De fato, a vida dessas criaturas parece um pouco ... caótica. Pode-se calcular que uma colônia sempre começa com o seguinte padrão:
(Abelha desenhada por Emmanuel Boutet no Wikimedia Commons . Esta imagem de favo de mel e abelhas é divulgada sob CC-By-SA . Resmunga )
Depois disso, os ciclos de vida das abelhas são divididos nas chamadas gerações. Cada geração de abelhas velhas morre e as novas eclodem e depende principalmente dos vizinhos de suas células:
- Se uma abelha tem menos de dois vizinhos, morre devido à solidão.
- Se uma abelha tem mais de três vizinhos, morre devido à superlotação.
- Se uma célula possui duas, três ou quatro abelhas vivas nas células vizinhas, uma nova abelha eclode na próxima geração.
As abelhas moribundas não morrem até o final de uma geração, portanto ainda afetam as células circundantes que podem chocar as abelhas na próxima geração.
Agora que sabemos como essa colônia funciona, podemos simulá-la por várias gerações.
Entrada
A entrada é um número único N , fornecido na entrada padrão, terminado por uma quebra de linha. 0 ≤ N ≤ 150. Este é o número de gerações para simular.
Resultado
A saída é um número único, na saída padrão e, opcionalmente, seguida por uma única quebra de linha, que representa o número de abelhas vivas após N gerações.
Saída adicional com erro padrão é ignorada.
Entradas de Amostra
0
5
42
100
Saídas de amostra
6
44
1029
5296
Condição vencedora
O código mais curto vence, como é habitual no golfe. Em caso de empate, a solução anterior vence.
Casos de teste
Existem dois scripts de teste, contendo casos de teste idênticos:
A invocação ocorre nos dois casos:, <test script> <my program> [arguments]
por exemplo, ./test ruby beehive.rb
ou ./test.ps1 ./beehive.exe
.
Eu sei que existem apenas 22 testes em vez de 151 (principalmente porque as soluções costumam ser bastante lentas). Evite incorporar os casos de teste exatos em vez de resolver a tarefa. Esses scripts são uma conveniência para você testar se uma alteração ainda faz com que o programa se comporte corretamente; não que você possa adaptar seu código aos casos de teste específicos.
Outra nota
Esta tarefa fez parte de um concurso de golfe realizado na minha universidade durante o período 2011-W24. As pontuações e idiomas de nossos concorrentes foram os seguintes:
- 336 - C
- 363 - C
- 387 - C
- 389 - Haskell
- 455 - C
Nossa própria solução foi
- 230 - Ruby