[pascal] problem z 'gra w życie'.

0

WITAM serdecznie, mam problem z "gra w zycie'. Próbowałem na różne sposoby ugryźć ten problem ale nie moge sobie poradzić dlatego zwracam się o pomoc...

Otóż napisąłem macież 20x20 integer. wypełniona jest '0' oznaczonymi jako wygasłe komórki oraz '1' które sa oznaczone jako żywe. Poniżej umieszczam zasady conwaya które próbowałem zaimplementować:

Martwa komórka, która ma dokładnie 3 żywych sąsiadów, staje się żywa w następnej jednostce czasu (rodzi się)
Żywa komórka z 2 albo 3 żywymi sąsiadami pozostaje nadal żywa; przy innej liczbie sąsiadów umiera (z "samotności" albo "zatłoczenia").

chciałem stworzyć oscylator 'szybowiec' którego obra jest poniżej:
user image

a tutaj moj kawałek kodu, z usuniętymi bzdurami które wczesniej pisałem.

program gra;

uses crt;
const
        N=20;
var
        tab:array [1..N,1..N] of integer;
        a,i,j:integer;
        flaga:integer;

procedure tablica;
var
i,j,z:integer;

begin
z:=N div 2;
for i:=1 to N do
for j:=1 to N do begin
        tab[i,j]:=0;
        end;

tab[1,1]:=1;
tab[2,2]:=1;
tab[2,3]:=1;
tab[3,1]:=1;
tab[3,2]:=1;

for i:=1 to N do
        begin
for j:=1 to N do
         write(tab[i,j],' ');
         writeln;
         end;
end;

begin
clrscr;
tablica;
readkey;
clrscr;

{tutaj chciałem wsadzić algorytmy na próbe które by tworzyły chociaz jedna komorke, albo gasiły - inaczej miejsce na próby}

for i:=1 to N do
        begin
for j:=1 to N do
         write(tab[i,j],' ');
         writeln;
         end;
readkey;
end.

Chciałbym zrobić to najprostrzą metodą, czyli jak zaczatki juz widac, prosta tablica z 0 i 1. Próbowałem coś z tym zrobić ale nie potrafie sobie poradzić i proszę o pomnoc gdyż każda będzie nieocenioną radą dla mnie.

Pozdrawiam

0

zrób 2 tablice, w jednej masz stan obecny, w drugiej obliczasz następne pokolenie

0

Zrobiłem drugą tablice tab2:array [1..N,1..N] of integer;
ale chodzi teraz o algorytm, jak zadeklarować to, aby przypisywał '1' do komórki która ma dwóch trzech sąsiadów i 'gasił' czyli przypisywał '0' komórkę która ma więcej jak trzech i mniej jak dwóch.

Proszę o pomoc

0

Lecisz po wszystkich komórkach tablicy i zliczasz wartości sąsiadów dla każdej komórki. jak spełnia warunek to "żyje", jak nie to "umiera", ofc w następnym pokoleniu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1