Az alábbi automaták mind úgy működnek, hogy egy 2D rács minden mezője (cellája, sejtje) egy adott állapotban van (ez lehet kétállapotú – élő vagy halott -, de lehet több is), majd minden egyes iterációban a környezettől függően változik a cellák állapota.
NagyHF-ként elvárás, hogy a program nyújtson egy könnyen kezelhető GUI-t kezdőállapotok beállítására, valamint lehessen állapotot elmenteni és visszatölteni is. A szimuláció sebességét lehessen változtatni, és a szimulációt bármikor le lehessen állítani illetve újra el lehessen indítani.
Életjáték
A legismertebb sejtautomata. Minden cella két állapotban lehet (élő/üres), és a következő iterációban azok a cellák maradnak életben, amelyeknek 2 vagy 3 élő szomszédja van, és azok az üres cellákban kelnek életre, amelyeknek pontosan 3 szomszédja van (Moore-környezetben, tehát a környező 8 cellából).
A programot úgy kell megírni, hogy a szabályokat a kezelőfelületen meg lehessen adni: ennek a szokásos jelölése B../S.. (born / survive), pl. a Conway-féle klasszikus Game of Life kódja B3/S23, de pl. a David Bell-féle Day and Night kódja B3678/S34678, a Nathan Thompson-féle HighLife kódja B36/S23. Különösen érdekes a Brian Silverman-féle Seeds, aminek a kódja B2/S, tehát minden sejt csak egy iterációig él, vagy a Janko Gravner-féle Life without Death (vagy Flakes), aminek a kódja B3/S012345678, tehát minden sejt örökké él (és szép “pelyheket” formál). Minimalista a Kellie Evans-féle Gnarl, aminek a kódja csupán B1/S1 (érdemes kipróbálni pl. egyetlen pontból). Fantasztikus Edward Fredkin Replicator automatája (B1357/S1357), melyben a minták “osztódnak” – 32 iteráció után 8x-ozódik minden. Szép mintát ad a Gérard Y. Vichniac-féle Anneal (B4678/S35678), ami egy random konfigurációból elég hamar beáll egy plazma-szerű képbe, vagy az ismeretlen szerzőjű Serviettes, aminek kódja B234/S. Szintén érdekes lehet az ismeretlen szerzőjű Maze (B3/S12345), ami egy útvesztőt generál (ha B37/S12345-t használunk, akkor egerek is futnak benne), vagy Jeremy Kun barlang-generáló automatája (B678/S345678).
Érdekes plusz feature lehet, ha a meghalt cellákat nem törli rögtön a program, hanem csak egyre halványítja minden iterációban.
Ld. még: Wikipedia, CA rules lexicon
Turmeszek
A “turmesz” egy 2D Turing-gép (angolul “Turmite”), itt tehát nem egy 1D szalag van, hanem egy 2D rács, amelynek minden cellája 2 állapotú (0 vagy 1), és van egy aktuális pozíció és irány – ez reprezentálható egy hangyával (vagy termesszel). Minden lépésben a hangya az aktuális állapotának és a cella tartalmának megfelelően csinálja a következőket:
- Fordul 90 fok valamilyen sokszorosával → L[eft], R[ight], N[o turn], U[-turn]
- Az aktuális cellába beleír valamit (0 vagy 1)
- Előre lép egyet
- Átmegy egy másik állapotba
Egy lehetséges program pl.:
[állapot-cellaérték-irány-újérték-újállapot]
0-0-R-1-0
0-1-R-1-1
1-0-N-0-0
1-1-N-0-1
Tehát 0-s állapotban, ha 0-s cellán áll, akkor jobbra fordul, 1-est ír, és marad 0-s állapotban. Ha 1-es cellán áll, akkor jobbra fordul és átmegy 1-es állapotba. Amikor 1-es állapotban van, ha 0-át talál, akkor átmegy 0-s állapotba; ha 1-et talál, akkor azt 0-ra javítja, de marad 1-es állapotban.
Egy másik példa az eredeti Langton-féle hangya (amiről belátták, hogy egy univerzális Turing gép!):
0-0-R-1-0
0-1-L-0-0
A programot úgy kell megcsinálni, hogy a Turmesz-gép specifikációját a fenti formátumban meg lehessen adni.
Ld. még: Wikipedia
Wireworld
Ez egy többszínű automata, amivel szimulálni lehet kábeleken futó elektromosságot, és így fel lehet építeni vele logikai kapukat és akár egy teljes számítógépet.
4 fajta állapot van:
- 0 – üres
- 1 – elektronfej
- 2 – elektronfarok
- 3 – vezeték
A szabályok egyszerűek:
- 0 → 0 [az üres üres marad]
- 1 → 2 [az elektron továbbmegy, és a fejből farok lesz]
- 2 → 3 [az elektron továbbmegy, és a farok eltűnik, a helyén vezeték lesz]
- 3 → 1, ha pontosan 1 vagy 2 szomszédos elektronfej van [ettől megy előre az elektron, illetve így egyesül két elektron]
Ld. még: Wikipedia