roponowany przeze mnie temat jest do╢µ oklepany i prawdopodobnie wiesz o co chodzi, ale je╢li jeste╢ pocz▒tkuj▒cy, to warto przeczytaµ ten tekst. Jednocze╢nie zaznaczam, ┐e umieszczony przeze mnie tu program jest w│asnej roboty, a ewentualne podobie±stwo do innych jest nieumy╢lne, choµ chyba nieuniknione.
Powsta│o ju┐ wiele symulator≤w gry »ycie, ale ja zachΩcam do pr≤by skonstruowania swojego w│asnego. Bardziej leniwym polecam eksperymenty z moim programem, kt≤ry mo┐ecie sobie ╢ci▒gn▒µ. Tym, kt≤rzy nie mieli nigdy do czynienia z t▒ gr▒, przybli┐am temat w nastΩpnym punkcie.
Wybra╝ sobie, ┐e masz przed sob▒ planszΩ, najlepiej kwadratow▒. Jest podzielona na pola, niczym pokratkowana kartka. Dobrze by│oby, gdyby╢ spr≤bowa│ zrozumieµ zasady w│a╢nie korzystaj▒c z kratki i d│ugopisu. Na pocz▒tek zaznacz kilka dowolnie wybranych p≤l (kratek) jako zaznaczone. Najlepiej, je╢li bΩd▒ one na tyle blisko siebie, aby czΩ╢µ z nich siΩ styka│a bokami. Zrobione? Bardzo dobrze. Teraz pobud╝ swoj▒ wyobra╝niΩ. Wyobra╝ sobie, ┐e plansza to teren zajmowany przez populacjΩ organizm≤w, a zaznaczone kratki to tereny zamieszkane przez pojedynczy organizm. Brzmi to trochΩ ╢miesznie, ale b▒d╝ cierpliwy. Przyjmij, ┐e zaproponowany przez Ciebie rozk│ad organizm≤w reprezentuje jedno pokolenie w ich ┐yciu. Teraz we┐ drug▒, czyst▒ kartkΩ i zape│nij odpowiednie kratki wg regu│y: je╢li kratka mia│a dw≤ch lub trzech "s▒siad≤w" (tzn. je╢li na poprzedniej kartce dwa lub trzy pola s▒siednie by│y zaznaczone), zaznacz tak┐e j▒. Je╢li by│o inaczej, nie zaznaczaj jej!!! Oczywi╢cie, ilo╢µ s▒siad≤w sprawdzamy na poprzedniej planszy, nie sugeruj▒c siΩ tym, co jest na nowej. Odpowiada to sytuacji, gdy wszystkie nasze wirtualne "osobniki" ┐yj▒, je╢li maj▒ dw≤ch lub trzech s▒siad≤w, a w przeciwnym razie umieraj▒. Mo┐na sobie t│umaczyµ, dlaczego nasze hodowane organizmy maj▒ takie a nie inne preferencje. Mo┐e za du┐a ilo╢µ s▒siad≤w wy┐era im pokarm? No, koniec ┐art≤w, wr≤µmy do tematu. W opisany przeze mnie spos≤b nale┐y postΩpowaµ z coraz to nowymi kartkami.
Je╢li sprawa jeszcze nie jest dla Ciebie jasna, zachΩcam do odtworzenia przyk│adowej prezentacji poni┐ej, ilustruj▒cej rozw≤j populacji dla bardzo prostego stanu pocz▒tkowego przez kilka pokole±.
A oto algorytm ilustruj▒cy przechodzenie do kolejnego pokolenia, zapisany w pascalu. Wykonanie odpowiednich procedur zostawiam Tobie!!!
Program Zycie; var tab,temptab: array[1..100,1..100] of boolean; x,y: integer; . . . begin . . . {Pocz▒tek zmiany pokolenia} temptab:=tab; for x:=1 to 100 do for y:=1 to 100 do if dwaj_albo_trzej_s▒siedzi(x,y)_w_temptab then tab[x,y]:=true else tab[x,y]:=false; {Koniec zmiany pokolenia} . . . end.
Mo┐esz pobraµ moj▒ wersjΩ "»ycia" spakowan▒ Zipem (17 kB) lub bardziej rozbudowan▒ wersjΩ (35 kB) Paw│a P▒czkowskiego oraz obejrzeµ galeriΩ przyk│adowych obraz≤w wygenerowanych przeze mnie przy u┐yciu algorytmu gry »ycie (du┐e regularne "kolonie").
Czy wiesz, ┐e...
Gra ┐ycie liczy sobie ju┐ ponad 30 lat! Zosta│a wymy╢lona w roku 1970 przez matematyka, Johna Conwaya.