Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: Schwierigkeiten mit Game of Life Algorithmus

  Alt 12. Dez 2005, 15:12
Zitat von fabiO:
Ich hab das mal überdacht, wobei mir etwas aufgefallen ist.
Wenn ich das Feld größer mache und hierbei die randfelder Leer lassen, also somit eine umrandung schaffe, funktioniert das programm ja auch nicht.
Ach ja, Eckenfelder haben ja seltener 3 Nachbarn... Soll das so sein? Hab ich nie gemacht, aber egal. Wenn Du aber einen Überlauf haben willst, also der linke Nachbar von A[i,0] soll A[i,50] sein, dann versuche Dein Glück mal mit 'modulo'.
Dein Array ist also so definiert:
Delphi-Quellcode:
Var
  LifeWelt : Array [0..N-1, 0..M-1] Of Byte;

Function ZaehleNachbarn (i,j : Integer) : Integer;
Var
  dx,dy : Integer;

Begin
  Result := -alt[i,j]; // Wir zählen Alles, auch uns selbst
  For dx:=-1 to 1 do
    for dy:=-1 to 1 do
       If alt [(i + N + dx) mod N , (j + M + dy) mod M] = 1 then
          inc(Result);
End;
Probe:
Linker Nachbar von j=0 soll sein: M-1. dy=-1, also ergibt j+M-1 mod M = M-1, q.e.d
Rechter Nachbar von j=M-1 soll sein:0. dy= 1, also ergibt (M-1)+M +1 mod M = 2M mod M = 0. q.e.d
Für alle anderen Fälle ist (j+M+dy) mod M = j+dy. q.e.d

Gleiches gilt für oben/unten... oder (prüf mal selbst)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat