diff --git a/game_of_life.adb b/game_of_life.adb index b438d55..65ba636 100644 --- a/game_of_life.adb +++ b/game_of_life.adb @@ -22,7 +22,8 @@ procedure Game_of_Life is type Platz is (Frei, Belegt); - type Index is mod 8; + -- Ermoeglicht automatisch die Torus-Form + type Index is mod 4; type Pool is array (Index, Index) of Platz; @@ -40,11 +41,11 @@ procedure Game_of_Life is end Put; package R is new Ada.Numerics.Discrete_Random (Platz); - + -- G : R.Generator; procedure Initiate (Feld : in out Pool) is G : R.Generator; begin - R.Reset (G); + R.Reset (G); for y in Index loop for x in Index loop Feld (x, y) := R.Random (G); @@ -106,7 +107,7 @@ procedure Game_of_Life is Geschichte : Pools; Feld : Pool; begin - + <> Initiate (Feld); Put_Line ("Startbelegung:"); @@ -124,6 +125,11 @@ begin Anzahl_Schritte := Natural (Geschichte.Length) - Cycle_Start; + if Anzahl_Schritte = 1 then + Geschichte.Clear; + goto Anfang; + end if; + Put_Line ("Zykluslaenge:" & Natural'Image (Anzahl_Schritte) & " Schritte"); -- Put_Line ("Wie viele Folgebelegungen sollen berechnet werden?"); diff --git a/game_of_life_oszillierend.txt b/game_of_life_oszillierend.txt new file mode 100644 index 0000000..3bc491b --- /dev/null +++ b/game_of_life_oszillierend.txt @@ -0,0 +1,57 @@ +... +X . X X +X X X X +. . . . +Zyklus nach 3 Schritten. +Startbelegung: +X X X . +. . . . +. . . . +X X X . +Zyklus nach 0 Schritten. +Zykluslaenge: 2 Schritte + 1. Folgebelegung: +. . . . +X . X X +X . X X +. . . . + + 2. Folgebelegung: +X X X . +. . . . +. . . . +X X X . + + +real 0m34.743s +user 0m7.554s +sys 0m13.497s +Press any key to continue. + + + +Startbelegung: +. . . . +X X . . +X X X . +. X . X +Zyklus nach 2 Schritten. +Zykluslaenge: 2 Schritte + 1. Folgebelegung: +. . . . +X X X . +X X X . +. . . . + + 2. Folgebelegung: +X . X X +. . . . +. . . . +X . X X + + +real 0m21.918s +user 0m4.515s +sys 0m8.986s +Press any key to continue. +