Le jeu de la vie de Conway est (presque) toujours joué sur une grille carrée régulière, mais ce n'est pas nécessairement le cas.
Ecrivez un programme qui implémente les règles de cellule standard voisines du Game of Life de Conway sur un pavage à deux dimensions du plan euclidien qui n'est pas un pavage régulier de carrés, de triangles ou d'hexagones .
Plus précisément, le carrelage que vous choisissez ...
- Doit contenir au moins deux (mais un nombre fini) de prototiles de formes différentes .
- Les différentes formes peuvent être des versions mises à l'échelle ou pivotées les unes des autres.
- Ils doivent être capables de carreler tout l'avion sans laisser de trous.
- Il doit s'agir de simples polygones à périmètre fini. (Ils peuvent ne pas être faiblement simples.)
- Doit être isomorphiquement distinct des grilles carrées, triangulaires et hexagonales.
- Toute mosaïque qui se réduit trivialement à une grille carrée, triangulaire ou hexagonale régulière n'est pas autorisée. (Vous pouvez toujours utiliser des carrés / triangles / hexagones dans d'autres pavages.)
- La frontière entre deux prototiles peut contenir plusieurs arêtes et sommets, mais elle doit être continue.
Votre mosaïque peut être périodique ou apériodique, mais lorsqu'elle est étendue pour couvrir tout le plan, chaque prototile doit apparaître une infinité de fois. (Donc, pas de "codage en dur" de certaines parties de votre mosaïque pour aider à atteindre les points supplémentaires ci-dessous.)
Chacun de vos prototiles représente une cellule de Game of Life adjacente à d'autres cellules:
- Les cellules qui partagent des arêtes ou des sommets sont considérées comme des voisins.
- Les cellules qui partagent plusieurs arêtes ou sommets ne sont toujours comptées qu'une seule fois chez leurs voisins.
- Les cellules ne peuvent pas se voisiner.
Liens d'inspiration de carrelage:
- http://en.wikipedia.org/wiki/Tiling_by_regular_polygons
- http://en.wikipedia.org/wiki/List_of_uniform_tilings
- http://en.wikipedia.org/wiki/Aperiodic_tiling
- http://en.wikipedia.org/wiki/Penrose_tiling
Sortie
Votre programme devrait produire une sorte de représentation graphique de votre mosaïque avec le jeu de la vie qui y est joué, que vous devriez bien sûr publier au format image / gif / jsfiddle.
Veuillez tracer les lignes du bord des carreaux et utiliser une couleur claire pour les cellules mortes et une couleur sombre pour les cellules vivantes.
Notation
Votre score de soumission correspond au nombre de votes positifs moins les votes positifs, plus des points supplémentaires permettant de découvrir les caractéristiques communes de Game of Life dans votre mosaïque:
- Trouvez une nature morte - un modèle qui ne change pas d'une génération à l'autre. (+2)
- Trouvez des oscillateurs avec une période comprise entre 2 et 29. (+3 pour chaque période trouvée, jusqu'à un total de 5 périodes ou +15 points maximum)
- Trouvez un oscillateur avec une période de 30 ans ou plus. (+7)
- Trouvez un vaisseau spatial - quelque chose qui peut s’éloigner de façon arbitraire de son point de départ sans laisser de débris. (Il se peut que ce ne soit pas nécessairement un oscillateur en mouvement.) (+10)
- Trouvez un autre vaisseau spatial qui se déplace de manière distinctement différente (et n’est pas une version en miroir du premier vaisseau spatial), par exemple, voir Planeur et LWSS . (+10)
- Trouvez un modèle de croissance infinie . Vous n'êtes pas obligé de prouver que la croissance est infinie, il vous suffit de nous montrer suffisamment de preuves du modèle pour qu'il soit pratiquement certain. (+25)
- Trouvez une arme à feu - quelque chose qui génère des vaisseaux spatiaux pour toujours (cela compte aussi comme une croissance infinie). (+50)
Les modèles de croissance infinis doivent commencer par un nombre fini de cellules vivantes et les autres modèles doivent toujours contenir un nombre limité de cellules vivantes (par exemple, un vaisseau spatial ne doit pas croître arbitrairement dans le temps).
En raison de la nature des pavages apériodiques, il semble probable que nombre de ces modèles seraient impossibles à appliquer. Ainsi, tout carrelage apériodique vérifiable obtient automatiquement +40 points. Un motif qui fonctionne à un endroit dans un carrelage apériodique n'a pas à fonctionner à d'autres endroits.
Chacun des bonus ne peut être appliqué qu'une seule fois. Naturellement, nous aurons besoin de voir la sortie pour les vérifier. Le score le plus élevé gagne.
Remarques
- Chaque réponse ne peut avoir des bonus appliqués à un pavage spécifique. (Bien que vous soyez libre d'inclure des pavages associés.)
- Les règles du jeu de la vie sont les suivantes:
- Toute cellule vivante avec moins de 2 ou plus de 3 voisins vivants décède.
- Toute cellule morte avec exactement 3 voisins vivants s'anime.
- Les autres cellules ne changent pas.
- Les modèles pour les points supplémentaires doivent être possibles quelles que soient les conditions aux limites, mais vous pouvez sinon choisir les conditions aux limites de votre choix.
- Par défaut, l’arrière-plan doit être composé de tous les carreaux morts.
Merci à Peter Taylor, Jan Dvorak et à githubphagocyte d’avoir aidé à éliminer les failles dans lesquelles les carrelages devraient être autorisés.
(Au cas où quelqu'un serait curieux, c'est certainement mon préféré parmi mes propres défis .)