Model "Sandpile" - przesypywanie piasku
Model "Sandpile" - przesypywanie piasku
Wejdź na stronę [ modelu Sandpile ] i pobaw się tamtejszym automatem: wybierz różne opcje z listy „Presets” na samej górze, wklikaj własnoręcznie przeszkody dla piasku (naciśnij „Start” gdy skończysz wklikiwać). Automat ten działa zgodnie z następującymi regułami:
Plansza dzielona jest według tzw. sąsiedztwa Margolusa – brane są pod uwagę kwadraty złożone z czterech pól. Lewy górny róg kwadratu ma na zmianę współrzędne (2k,2k) – w parzystych iteracjach oraz (2k+1,2k+1) – w nieparzystych iteracjach (lub na odwrót).
Ziarenka piasku przemieszczają się w dół według pięciu reguł:
-
1. i 2. - jeżeli ziarenko ma pod sobą pustą przestrzeń, to ją zajmuje (nie dotyczy to sytuacji o numerze 5!!)
-
3. i 4. - jeżeli ziarenko leży na innym ziarenku, lecz na ukos w dół znajduje się pusta przestrzeń, to górne ziarenko ją zajmuje,
-
5. - jeżeli dwa ziarenka znajdują się obok siebie, zaś pod nimi jest pusta przestrzeń, to:
- z prawdopodobieństwem 0.5 się zaklinują i w danej iteracji są nieruchome,
- z prawdopodobieństwem 0.5 przesuwają się jednocześnie w dół.
Oczywiście, ziarenka mogą występować w konfiguracjach innych niż podane poniżej na rysunku, jednak pozostałe konfiguracje są nieruchome.
Zadanie (4)
Uruchom skrypt sandpile.m i prześledź jego treść oraz działanie automatu. Wykorzystaj funkcję fWczytajZycie (z zadania (1)) do wczytania klifu lub wulkanu, przedtem musisz oczywiście takie struktury zapisać do pliku za pomocą zer i jedynek.
Zakomentuj fragment losujący ziarenka piasku na samej górze planszy i ustaw klif/wulkan gdzieś w dolnej części planszy tak aby stykał się z jej dolnym brzegiem – uruchom skrypt i podziwiaj osuwisko.