Laboratorium 7.04.2003
--------------------------------

Drugie zadanie punktowane, termin oddania 28.04.2003.

Na pewnym dyskretnym odcinku (składającym się z n równooddalonych punktów) żyją punkciaki 
(jak wiadomo niektóre płaszczyzny zamieszkują płaszczaki, a w R^3 podobno żyją wypuklaki). 
Żywot punkciaka jest określony zestawem (chciałoby się nawet rzec: listą) prostych poleceń. 
Każdy punkciak w każdej jednostce czasu (także czas jest w tym zadaniu dyskretny) wykonuje
jedno (kolejne) polecenie ze swojego zestawu. Polecenia są następujące:
	nic		nic nie rób (ulubione polecenie punkciaków),
	lewo	 	przesuń się w lewo o jeden punkt,
	prawo	przesuń się w prawo o jeden punkt,
	zniknij	punkciak znika na zawsze,
	pączkuj	punkciak pączkuje, tworząc nowego w tym samym punkcie. Nowy punkciak
	        dziedziczy po oryginalnym zestaw poleceń, ale oczywiście zaczyna go wykonywać 
		(w następnej jednostce czasu) od pierwszego polecenia.

Przesunięcie się w prawo z ostatniego punktu oznacza przejście na pierwszy punkt 
(i analogicznie z przesuwaniem się w lewo). W jednym punkcie może naraz przebywać
dowolna liczba punkciaków (wszak są bezwymiarowe). Po wykonaniu wszystkich poleceń
ze swojego zestawu punkciak rozpoczyna ich wykonywanie od początku.

Napisz program symulujący życie punkciaków. Program powinien na początku wygenerować
przykładowe dane (liczbę punkciaków, ich pierwotne położenie i  zestawy poleceń)  
i wypisać na ekranie początkowe położenie punkciaków. Następnie program ma symulować
zachowanie punkciaków w kolejnych jednostkach czasu: wykonać po jednym poleceniu
każdego punkciaka i wypisać na ekranie aktualny stan odcinka. Symulacja ma się 
kończyć w momencie gdy użytkownik naciśnie jakiś klawisz na klawiaturze.

Wymagana struktura danych: lista punkciaków, każdy z nich ma cykliczną listę poleceń.
Do wyświetlania wygodnie jest użyć tablicy (rozmiaru n) z informacją o liczbie 
punkciaków w danym punkcie. Uwaga: to nie jest jedyna dobra reprezentacja danych
dla tego zadania, natomiast jest to reprezentacja wymagana.

Wypisując bieżący stan odcinka należy przeznaczyć na ekranie po jednej pozycji dla
każdego punktu. Można założyć, że n nie przekracza szerokości ekranu. Jeśli w punkcie
są jakieś punkciaki, to należy wypisać ich liczbę lub * , jeśli jest ich więcej
niż 9. Jeśli w punkcie nie ma żadnego punkciaka to należy wypisać spację.

Jak zwykle należy wypisać na początku i końcu działania programu informację
o zajętości pamięci (oczywiście program po zakończeniu symulacji powinien zwrócić
do systemu zajętą przez siebie pamięć dynamiczną, więc te wypisane pary liczb
powinny być identyczne).

Uwagi:
- do sprawdzania czy użytkownik nacisnął jakiś klawisz służy funkcja keypressed
  z modułu CRT,

Możliwe rozszerzenia zadania (nie objęte już punktacją):
- bogatszy interfejs (np. możliwość oglądania programu wskazanego punkciaka),
- bogatsza lista poleceń (np. skoki, w R^1 nie znają jeszcze programowania
  strukturalnego).