czwartek, 26 stycznia 2017

"Reguła modulo" w automacie komórkowym 1D

Przeprowadzamy kolejną modyfikację deterministycznego automatu jednowymiarowego, a ponieważ kod definicji zmiennych oraz procedury setup() jest identyczny jak poprzednio, skupimy się na samej procedurze draw():

Kod draw() zawiera kilka istotnych modyfikacji:
  1. Do reguły wchodzi już nie tylko stan bezpośrednich sąsiadów komórki, ale tez sąsiadów odległych o 2 (linie 50-53) stąd poza zmienną right mamy jeszcze morer a zmienna left ma kuzynkę w postaci morel.
  2. Może zostać też doliczony stan komórki aktualnej (wykomentowana linia 69)
  3. Zamiast wykomentowanej reguły posiadania jednego sąsiada (linia 74) używamy reguły (linia 71) reszty z dzielenia liczby sąsiadów (lub komórek w obszarze o długości 5) przez jakąś stałą. W tym kodzie stała ta wynosi 3, ale warto sprawdzić też inne możliwości.
  4. Zmieniona zostaje wizualizacja. Dzięki instrukcji switch (linie 35-42) możemy inaczej pokolorować komórki o stanach 0,1,2 oraz pozostałych.
  5. Definiujemy osobne wyświetlanie aktualnego stanu w pasku na dole okna, czyli od y=994 do 999 (w linii 43). Dlatego jednak musimy ograniczyć liczbę wizualizowanych kroków automatu do 994 (linia 31)
Program ma potencjał na różnorodne eksperymenty - można używać lub nie stanu komórki aktualnej, można zmienić dzielnik, no i podobnie jak w poprzednim przypadku można manipulować gęstością początkową.
Oto jeden z wyników...

Brak komentarzy:

Prześlij komentarz