Zadanie zaliczeniowe z laboratorium Pascala i C. ZSI I. 04/05
-------------------------------------------------------------

Zadane: 10.11.2004, odbior: 24.11.2004, 2 punkty.

Zad 2.

Napisać program symulacyjny "Grę w Życie".

Zasady gry w Życie.
Gra w Życie jest symulacją odbywającą się na prostokątnej pokratkowanej
planszy. Krawędzie planszy są ze sobą sklejone (tzn. idąc w prawo ze 
skrajnie prawego pola planszy przejdziemy na znajdujące się w tym samym 
wierszu skrajnie lewe pole i analogicznie w pionie). Każda kratka jest 
pusta lub zawiera komorkę, która reprezentuje żywego osobnika. Populacja 
żywych osobników zmienia się z pokolenia na pokolenie wg następujących 
reguł:

1. Jeśli żywy osobnik ma co najwyżej jednego żywego sąsiada, to umiera z 
   samotności.

2. Jeśli żywy osobnik posiada co najmniej czterech żywych sąsiadów, to 
   umiera z przeludnienia.

3. Jeżeli żywy osobnik posiada co najmniej dwóch i co najwyżej trzech 
   żywych sąsiadów, to przeżywa.

4. W pustej kratce rodzi się życie, jeśli sąsiaduje ona z dokładnie 3 
   kratkami zawierającymi żywe osobniki.

Sąasiadami kratki jest wszystkie 8 otaczających ją kratek. Zauważmy, że 
zwn sklejenie krawędzi _każda_ kratka ma 8 otaczających ją komórek.

Program powinien:

  a) wczytać ze standardowego wejścia dane zawierające liczbę kroków 
     symulacji i początkowy stan symulacji,
     
  b) w kolejnych krokach wyświetlać następujące po sobie układy osobników.

Format danych wejściowych:

  * pierwszy wiersz zawiera liczbę naturalną k określającą liczbę kroków
    symulacji.
     
  * kolejne n-wierszy (n jest stała w programie, ustalamy że będzie ona
    równa 23) zawiera po n znaków. Każdy znak jest albo znakiem ' '
    (spacja - reprezentuje puste pole) albo '*' (osobnik).

Format danych wyjściowych:

  k bloków o podanym niżej formacie:
  
   * n wierszy zawierających po n znaków (' ' i '*') interpretowanych jw.
   
   * między każdą kolejną parą bloków jeden wiersz zawierający n znaków '-'
     (minus)
 
  Pierwszy blok reprezentuje stan początkowy (to, co podano na wejściu),
  każdy następny blok opisuje stan symulacji po kolejnym jej kroku.
  
  Uwaga: wszystkie wiersze wypisywane przez program powinny mieć dokładnie
  n znaków.