Specyfikacja interfejsu turniejowego do gangsterów
--------------------------------------------------

Pola, ruchy, itp.
-----------------
Współrzędne pola na planszy jednoznacznie określa para liczb: współrzędna
pozioma i pionowa. Współrzędna pozioma określa numer kolumny. Kolumny
numerowane są od lewej do prawej liczbami od 1 do n. Współrzędna pionowa
określa numer wiersza. Wiersze numerowane są od dołu do góry liczbami
od 1 do m.

Kierunek określa jedna liczba z zakresu od 0 do 7, tak jak na rysunku:

7   0   1
  \ | /
6 --+-- 2
  / | \
5   4   3

Opis ruchu składa się z jednej lub czterech liczb. Pierwsza liczba
oznacza kierunek przemieszczenia się kasetki. Jeśli w wyniku
przemieszczenia się kasetki w podanym kierunku znajdzie się ona na
miejscu parkingowym to jest to jedyna liczba opisująca ruch. W przeciwnym
wypadku w opisie ruchu występują jeszcze trzy liczby. Druga i trzecia
liczba jest współrzędną pola na planszy, na którym znajduje się samochód
gangstera wykonującego ruch (najpierw kolumna, potem wiersz), czwarta
liczba określa kierunek przemieszczenia się tego samochodu.
Tak więc przykładowy ruch gangstera czerwonego z treści zadania określony
jest liczbami 6 3 1 1.
Jeśli opisu ruchu składa się z jednej liczby, oznacza to, że jest to
ostatni ruch w tej partii, gdyż jest to ruch w wyniku, którego kasetka na
zostaje umieszczona na miejscu parkingowym.

Wymagania
---------          
Program do gry w gangsterów powinien czytać wyłącznie ze
standardowego wejścia, a pisać wyłącznie na standardowe wyjście.
Niedozwolony jest jakikolwiek inny rodzaj operacji wejścia/wyjścia,
na przykład czytanie i pisanie do plików. W celu ograniczenia
długości rozgrywki może być podane dodatkowe ograniczenie maksymalnej
liczby ruchów, jakie może wykonać każdy z graczy. Jeśli każdy z
graczy wykona zadaną maksymalną liczbę ruchów i sytuacja na planszy
będzie nierozstrzygnięta, to grę uważa się za zakończoną, a
wynikiem jest w takim przypadku remis. Ponadto program będzie miał
ustalony czas na partię. Będzie to czas, który program może
przeznaczyć na ,,myślenie'' sumarycznie w czasie całej partii.

Schemat działania
-----------------
Program powinien działać według następującego schematu:
* wczytanie opisu planszy oraz parametrów gry;
* jeśli gracz jest gangsterem czerwonym, to wykonuje ruch;
* następnie w pętli:
  - wczytuje ruch przeciwnika,
  - wykonuje ruch.

Wczytanie opisu planszy oraz parametrów gry
-------------------------------------------
Opis planszy oraz parametrów gry wczytuje się ze standardowego wejścia.
W pierwszej linii znajduje się jedna liczba - czas na całą partię w
milisekundach. W drugiej linii dane są dwie liczby n i m - szerokość i
wysokość planszy. W trzeciej linii będzie jedna liczba - 1 lub 2. Oznacza
ona kolor gangstera, którym będziemy się poruszać: 1 - gangster czerwony,
2 - gangster zielony. W czwartej linii dane są dwie liczby - współrzędne
pola (kolumna, wiersz), na którym umieszczona jest kasetka. W piątej
linii jest jedna liczba - maksymalna liczba ruchów, którą może wykonać
każdy z graczy. Zero oznacza brak ograniczenia liczby ruchów. W szóstej
linii jest jedna liczba s - liczba słupów na planszy. W każdym z
kolejnych s wierszy znajdują się dwie liczby - współrzędne pola
(kolumna, wiersz), na którym znajduje się słup.

Wykonanie ruchu
---------------
Program generuje ruch i wypisuje opisujące go jedną lub cztery liczby na
standardowe wyjście.

Wczytanie ruchu przeciwnika
---------------------------
Najpierw należy wczytać ze standardowego wejścia jedną linię, w
której znajduje się jedna liczba - pozostały czas na partię w
milisekundach. 
Następnie program wczytuje ze standardowego wejścia jedną linię
zawierającą cztery liczby. Jest to opis ruchu przeciwnika.

Pomiar czasu
------------
Czas ,,myślenia'' programu podczas wykonywania
każdego ruchu jest mierzony od momentu rozpoczęcia wczytywania
danych z wejścia (a podczas inicjalizacji od momentu uruchomienia
programu) do momentu zakończenia wypisywania ruchu na wyjście. Czas na
jedną partię będzie odwrotnie proporcjonalny do kwadratu liczby
uczestników (wyniesie zapewne ok. 1 min.).

Środowisko
----------
Konkurs będzie przeprowadzony w systemie Linux, programy grające
będą kompilowane kompilatorem FPC. Program grający będzie miał do
własnej dyspozycji 40MB RAM na dane i dodatkowo 8 MB na stos.

Uwagi
-----
Wszelkie liczby pojawiające się w jednej linii na standardowym wejściu
będą oddzielane pojedynczymi spacjami. Program wypisując opis ruchu
składający się z czterech liczb powinien porozdzielać liczby pojedynczymi
spacjami.

W następujących dodatkowych przypadkach działanie programu będzie
uznawane za niewłaściwe, a co za tym idzie będzie uznawane za porażkę:
* przekroczenie limitu czasu na partię,
* nieoczekiwane zakończenie się programu,
* wypisanie na standardowe wyjście opisu posunięcia nielegalnego lub
  niezgodnego ze składnią.

Ponadto zabronione jest też wykorzystywanie jakichkolwiek
dodatkowych modułów (poza modułem do pomiaru czasu udostępnianym 
na stronie przedmiotu w pliku timer.tgz);
w szczególności używanie mechanizmów wątków,
dodatkowych procesów, dodatkowych zasobów systemowych i wszelkiego
innego rodzaju niesportowego wykorzystywania systemu operacyjnego i
dostępnego środowiska.