Les chercheurs ont récemment découvert une colonie d'abeilles intéressante qui vit dans un champ infini de nids d'abeilles:
Chaque cellule peut héberger une abeille ou non. En fait, la vie de ces créatures semble être un peu ... chaotique. On pourrait calculer qu'une colonie commence toujours par le modèle suivant:
(Abeille dessinée par Emmanuel Boutet sur Wikimedia Commons . Cette image en nid d'abeille est donc publiée sous CC-By-SA . Grommelle )
Après cela, les cycles de vie de l'abeille sont divisés en soi-disant générations. Chaque génération d'abeilles meurent et de nouvelles éclosent et cela dépend principalement des voisins de leur cellule:
- Si une abeille a moins de deux voisins, elle meurt à cause de la solitude.
- Si une abeille a plus de trois voisins, elle meurt à cause du surpeuplement.
- Si une cellule a deux, trois ou quatre abeilles vivantes dans les cellules voisines, une nouvelle abeille éclosera dans la prochaine génération.
Les abeilles mourantes ne meurent pas avant la fin d'une génération, elles affectent donc toujours les cellules environnantes qui pourraient éclore des abeilles dans la génération suivante.
Maintenant que nous savons comment fonctionne une telle colonie, nous pouvons la simuler à travers un certain nombre de générations.
Contribution
L'entrée est un seul nombre N , donné sur l'entrée standard, terminé par un saut de ligne. 0 ≤ N ≤ 150. Il s'agit du nombre de générations à simuler.
Production
La sortie est un nombre unique, sur la sortie standard et éventuellement suivi d'un saut de ligne unique, qui représente le nombre d'abeilles vivantes après N générations.
La sortie supplémentaire sur l'erreur standard est ignorée.
Exemples d'entrées
0
5
42
100
Exemples de sorties
6
44
1029
5296
Condition gagnante
Le code le plus court gagne, comme c'est la coutume dans le golf. En cas d'égalité, la solution précédente l'emporte.
Cas de test
Il existe deux scripts de test, contenant des cas de test identiques:
L'invocation est dans les deux cas:, <test script> <my program> [arguments]
par exemple ./test ruby beehive.rb
ou ./test.ps1 ./beehive.exe
.
Je sais qu'il n'y a que 22 tests au lieu de 151 (principalement parce que les solutions sont souvent assez lentes). Veuillez vous abstenir d'incorporer les cas de test exacts au lieu de résoudre la tâche. Ces scripts vous permettent de tester si une modification entraîne toujours le comportement correct du programme; pas que vous puissiez adapter votre code aux cas de test spécifiques.
Une autre note
Cette tâche faisait partie d'un concours de golf organisé dans mon université en 2011-S24. Les scores et les langues de nos candidats étaient les suivants:
- 336 - C
- 363 - C
- 387 - C
- 389 - Haskell
- 455 - C
Notre propre solution était
- 230 - Rubis