Projekt 3 (Automaty komórkowe)
Transkrypt
Projekt 3 (Automaty komórkowe)
Dr Mirek Łątka Programowanie w C Wiosna 2011 Projekt 3 (Automaty komórkowe) Rozważmy jednowymiarową tablicę, której elementy mogą być zerami lub jedynkami, oraz jej interptetację graficzną. O jedynkach będziemy mówili jako o żywych komórkach. Powyższa tablica to stan początkowy populacji komórek. Naszym zadaniem będzie generowanie kolejnych pokoleń komórek. O tym czy w następnym pokoleniu dany element tablicy będzie jedynką lub zerem (komórka będzie żywa lub nie) decyduje tylko stan samej komórki oraz jej najbliższych sąsiadów w poprzednim pokoleniu. Po krótkiej analizie przekonasz się, że komórka oraz jej najbliżsi sąsiedzi mogą znajdować się w jednym z 8 stanów: 111 110 101 100 011 010 001 000 Stany te możemy interpretować jako liczby zapisane w notacji binarnej. Na przykład 111 to 1• 22+ 1• 21+ 1• 20=7, 110 to 1• 22+ 1• 21+ 0• 20=6, 101 to 1• 22+ 0• 21+ 1• 20=5. Tak więc możliwe stany to liczby dziesiętne od 7 do zera. Ewolucja początkowej populacji komórek zależy od wyboru reguły ewolucji. Oto przykład jednej z 256 takich reguł (udowodnij, że rzeczywiście jest tylko 256 takich możliwości): Obecny stan komórki 111 110 101 100 011 010 001 000 i jej otoczenia Nowy stan komórki i jej graficzna ilustracja 0 0 0 1 1 1 1 0 Jeżeli tą regułę znowu potraktujemy jako liczbę w systemie dwójkowym to: 000111102= 0• 27+ 0• 26+ 0• 25+ 1• 24+ 1• 23+ 1• 22+ 1• 21+ 0• 20= 3010 dlatego nazywamy ją często regułą 30. Napisz program, który w oknie graficznym biblioteki Allegro wyświetla ewolucję jednowymiarowego opisanego automatu komórkowego. Obliczenia rozpocznij od reguły 30. Niech rozmiar tablicy będzie N=31. Stan początkowy to jedna żywa komórka umieszczona w środku tablicy. Na poniższym rysunku pokazano najbliższych sąsiadów (kolor czerwony) komórek znajdujących się na początku lub końcu tablicy (kolor zielony). W fizyce ciała stałego taki schemat nazywamy periodycznymi warunkami brzegowymi.