Drugie zadanie punktowane, termin oddania 25.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).