Chaque cellule d'un automate cellulaire réaliste n'a besoin que d'un bit pour la représenter car elle ne peut être vivante ou morte. Cela signifie qu'il n'y a que deux couleurs; Plutôt ennuyeux.
Les images normales ont 24 bits par pixel (8 dans chaque RVB). Cela signifie que dans une image normale avec des pixels comme cellules, vous pouvez simuler 24 jeux réalistes à la fois!
Défi
Votre tâche consiste à écrire un programme qui appliquera une génération des règles d'un automate cellulaire réaliste à une image de profondeur 24 bits (dans n'importe quel format bien connu que vous aimez), et à sortir l'image résultante.
Chacune des 24 couches utilisera le même ensemble de règles réaliste, strictement dans sa propre couche. Les 24 couches n'interagissent pas entre elles.
Également
- Les zéros sont des cellules mortes et les uns sont des cellules vivantes.
- Les conditions aux limites sont périodiques (formant un tore).
- Toutes les dimensions de l'image devraient fonctionner.
Entrée sortie
Votre programme doit accepter 3 arguments, via stdin ou la ligne de commande (ou l'équivalent le plus proche de votre langue):
- Nom du fichier image d'entrée.
- Une chaîne des chiffres 0 à 8 dans l'ordre croissant qui indique la naissance de nouvelles cellules:
- Si le chiffre d est dans la chaîne, les cellules mortes s'animent lorsqu'elles ont d voisins vivants.
- Exemple:
3
la vie est normale - les cellules mortes avec exactement 3 voisins vivants prennent vie.
- Une chaîne des chiffres 0 à 8 dans l'ordre croissant qui indique quand les cellules existantes survivent:
- Si le chiffre d est dans la chaîne, les cellules vivantes avec d voisins vivants survivent jusqu'à la génération suivante, sinon elles meurent.
- Exemple:
23
la vie est normale - seules les cellules avec exactement 2 ou 3 voisins survivent au tour suivant.
Notez que le quartier Moore est toujours utilisé. Lisez ceci ou cela pour plus d'informations sur ce qui définit précisément un automate réaliste et de nombreux jeux de règles intéressants.
L'image de sortie 1 génération plus tard doit être affichée ou enregistrée sous out.png
(ou bmp
ou autre).
Soumission
Le code le plus court en octets gagne.
Vous devez inclure au moins une image de test et de ses trois générations suivantes immédiates pour certains ruleset non trivial. Utilisez votre avatar et les règles de vie normales si vous ne trouvez rien de mieux.
Si vous le souhaitez, vous pouvez utiliser ce Gosper Glider Gun où les seuls bits vivants sont dans la couche verte 128 (il ne fonctionne que dans la vie normale):
La publication de séquences intéressantes ou même d'animations est fortement encouragée.