Sejtautomaták

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

https://i0.wp.com/psoup.math.wisc.edu/mcell/rules/life_serviettes.gif

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

Turmite spirals
Chaotic turmites 2

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:

  1. Fordul 90 fok valamilyen sokszorosával → L[eft], R[ight], N[o turn], U[-turn]
  2. Az aktuális cellába beleír valamit (0 vagy 1)
  3. Előre lép egyet
  4. Á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

Cellular Automata pattern of the week

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

Hozzászólás

Design a site like this with WordPress.com
Kezdjük el