ITPW

Betoniarki

Gra

W grze bierze udział dwóch graczy. Gra odbywa się na kwadratowej planszy o rozmiarach 10x10 pól. Każdy z graczy widzi całą planszę. Występują trzy rodzaje pól na planszy: wolne, zajęte przez betoniarkę oraz zamurowane.

Każdy z graczy ma do dyspozycji cztery betoniarki. Betoniarki mogą się ruszać o dowolną niezerową liczbę pól w jednym z ośmiu podstawowych kierunków. Ponieważ manewrowanie ciężką betoniarką jest trudne, ruch odbywa się po linii prostej i jest możliwy tylko wtedy, gdy pole docelowe oraz wszystkie pola na linii prostej pomiędzy nim a polem początkowym są wolne.

Betoniarki, oprócz ruszania, potrafią również wylewać beton na wolne pola. Takie pole stanie się zamurowane i nie będzie można więcej przejeżdżać przez nie. Betoniarki mogą zamurować dowolne pole leżące w jednym z ośmiu podstawowych kierunków od pozycji betoniarki, o ile jest ono wolne oraz wszystkie pola na linii prostej między zamurowywanym polem a pozycją betoniarki są wolne.

Gracze ruszają naprzemiennie. W każdej turze gracz wybiera jedną betoniarkę, rusza nią o niezerową liczbę pól i następnie zamurowuje jedno z pól na planszy. Oba elementy składowe ruchu są obowiązkowe oraz są wykonywane właśnie w tej kolejności.

Początkowe ustawienie betoniarek na planszy pokazane jest na obrazku poniżej. Na początku gry wszystkie pola nie zajęte przez betoniarki są wolne.
początkowy stan planszy

Gra toczy się do momentu, gdy któryś z graczy nie będzie mógł wykonać ruchu. Gracz ten przegrywa partię.

Każdy gracz ma na całą rozgrywkę dwie minuty.

Wykonanie nieprawidłowego ruchu, przekroczenie czasu lub zakończenie się programu powoduje automatyczne zakończenie rozgrywki na niekorzyść danego gracza, niezależnie od stanu partii.

Protokół

Komunikacja odbywa się przez standardowe wejście / wyjście.

Na początek program dostaje numer, którym jest graczem (jedna liczba w pierwszym wierszu): 1 - niebieski 2 - czerwony

Zaczyna gracz niebieski.

Gracz, który ma za zadanie wykonać ruch, otrzyma na wejściu jedną liczbę całkowitą, oznaczającą liczbę sekund pozostałych do dyspozycji gracza na całą grę. Na wyjściu należy wypisać w pojedynczej linii sześć liczb całkowitych x1 y1 x2 y2 xs ys. Liczby te powinny być oddzielone pojedynczymi odstępami. Oznaczają one, że betoniarka gracza ma się ruszyć z pola (x1, y1) na pole (x2, y2), a następnie zamurować pole (xs, ys).

Jeśli ruch jest nieprawidłowy, gra kończy się. Jeśli ruch jest prawidłowy, drugi gracz otrzyma na wejściu w jednej linii te same sześć liczb całkowitych: x1 y1 x2 y2 xs ys, oddzielone pojedynczymi odstępami.

Po wypisaniu czegokolwiek na standardowe wyjście należy je odświeżyć (w C służy do tego funkcja fflush(stdout)).

Proszę też zobaczyć przykładowy program.

Rozgrywki

Każdy z programów rozegra w ciągu całego turnieju taką samą, ustaloną z góry liczbę partii. W każdej grze zwycięzca otrzymuje 1 punkt, a przegrany 0. Suma punktów ze wszystkich gier zadecyduje o ostatecznym rankingu.

Dokładny system rozgrywek zostanie ustalony na postawie liczby zgłoszonych programów. Będzie to system kołowy "każdy z każdym" lub system szwajcarski, w którym w każdej turze przeciwnikiem programu jest program o możliwie podobnym wyniku punktowym z poprzednich gier, spośród graczy, z którymi nie rozgrywano jeszcze partii.

ITPW, KNI TEAM