Zitat von
fabiO:
Delphi-Quellcode:
...
if (alt[i,k] = 1) AND (nachbarn(i,k) = (2 or 3))
...
Wirklich so implementiert? Oder ist das Pseudocode? Du vergleichst, ob die Anzahl der Nachbarn gleich dem Ergebnis des Terms '2 or 3' ist.
Denn (2 or 3) ergibt 10 or 11 (binär) ergibt 11(binär) also 3. Nur wenn ich 3 Nachbarn habe, bleibe ich am Leben. Der Mittlere würde demnach auch sterben, denn er hat 2 Nachbarn. Genau das passiert bei Dir aber.
Du müsstest das umformulieren:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var n,i,k : Integer;
begin
for i := 1 to high(alt) do
for k := 1 to length(alt) do begin
n := Nachbarn (i,k);
if (alt[i,k] = 1) AND not (n in [2,3]) then // <---
neu[i,k] := 0;
if (alt [i,k] = 0) AND (n = 3) then
neu[i,k] := 1;
end;
...
end;
Dann sollte alles so funktionieren.