L'automate cellulaire semblable à la vie est un automate cellulaire qui est similaire au Game of Life de Conway, en ce sens qu'il fonctionne sur une grille carrée (théoriquement) infiniment grande, où chaque cellule a exactement 8 voisins et est l'un des 2 états, à savoir vivant et mort. .
Cependant, ces versions similaires sont différentes de manière cruciale: les règles pour qu'une cellule donnée prenne vie et les règles pour une cellule donnée pour survivre à la prochaine génération.
Par exemple, Game of Life classique utilise la règle B3/S23
, ce qui signifie qu'il faut 3 cellules vivantes pour en créer une nouvelle et 2 ou 3 voisins vivants pour survivre. Pour ce défi, nous supposerons que les voisins ne s’incluent pas, donc chaque cellule a exactement 8 voisins.
Votre tâche est, étant donné une configuration de départ, une règle de naissance, une règle de survie et un entier positif (le nombre de générations à exécuter), simuler l'automate Life-like en utilisant ces règles pour le nombre de générations donné dans le code le plus court possible . La configuration de départ sera une matrice carrée / un tableau bidimensionnel ou une chaîne multiligne, vous pouvez choisir. Les autres peuvent être donnés dans n'importe quel format et méthode raisonnables.
Par exemple, si la règle de naissance était 12345678
(tout voisin vivant), la règle de survie l'était 2357
et la configuration de départ était
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
les deux prochaines générations seraient
Generation 1: Generation 2:
0 0 0 0 0 1 1 1 1 1
0 1 1 1 0 1 1 0 1 1
0 1 0 1 0 1 0 1 0 1
0 1 1 1 0 1 1 0 1 1
0 0 0 0 0 1 1 1 1 1
Si le nombre de générations donné était de 10, la sortie serait quelque chose dans le sens de
0 1 1 1 0
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
0 1 1 1 0
Vous n'avez pas à gérer les modifications qui se produisent en dehors des limites données par la matrice d'entrée, cependant, toutes les cellules en dehors de la matrice commencent mortes. Par conséquent, la matrice d'entrée peut être de n'importe quelle taille, jusqu'à la valeur maximale que votre langue peut prendre en charge. Vous n'avez pas besoin de sortir la carte entre les générations.
Ceci est un code-golf donc le code le plus court l'emporte.
Cas de test
Ceux-ci utilisent la B/S
notation pour indiquer les règles utilisées
B2/S2
, generations = 100
, Configuration:
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
Production:
0 0 0 0 0 0 0 0
0 1 0 0 0 0 1 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 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
B1357/S2468
, generations = 12
, Configuration:
1 0 1 0 1 0
0 1 1 0 1 0
1 0 0 0 0 0
0 0 0 0 0 1
1 1 1 1 1 0
0 1 1 0 0 1
Production:
0 1 0 0 0 0
0 1 1 1 1 0
0 1 0 1 1 0
1 1 1 0 0 0
0 0 1 1 1 0
0 1 1 0 0 0
Si vous avez besoin de générer plus de cas de test, vous pouvez utiliser ce merveilleux simulateur. Veuillez vous assurer de limiter la taille de la planche