Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
WIPING26 - Nawigator |
Zadanie eliminacyjne w konkursie WIPING2 organizowanym przez
Wydział Informatyki Zachodniopomorskiego Uniwersytetu Technologicznego w Szczecinie
Nawigator
Twoim zadaniem będzie oprogramowanie Automatycznego Nawigatora, który będzie wspomagał marynarzy w ich wędrówkach po Morzu Ping.
Żegluga po Morzu Ping nie przypomina w niczym nawigacji na innych akwenach. Po pierwsze, wszystkie mapy tego morza są rysowane w kartezjańskim układzie współrzędnych, a współrzędne określające położenie na tym morzu są zwykłymi współrzędnymi kartezjańskimi. Po drugie, kurs określa się tutaj jako kąt między trasą statku o osią OY liczony w kierunku ruchu wskazówek zegara.
Firma Ping&Co wypuszcza właśnie na rynek automat nawigacyjny, który przy użyciu dość zaawansowanej magii jest w stanie w regularnych odstępach czasu podawać aktualną pozycję statku. To oczywiście zbyt mało, aby ten przyrząd mógł się stać przebojem rynkowym, trzeba więc rozszerzyć jego funkcje i to właśnie zadanie spada na twoje barki.
Przygotuj się więc do napisania programu, który na starcie otrzymuje współrzędne punktu docelowego (zakładamy, że każda podróż zaczyna się w porcie o współrzędnych (0,0)).
Od tego momentu zaczyna działać automat nawigacyjny, który starając się utrzymać statek na wyznaczonym kursie w regularnych odstępach czasu przekazuje twojemu programowi dane o położeniu. Twój program z kolei powinien w odpowiedzi przekazać automatowi jedną z trzech informacji:
- OK jeśli płynie poprawnym kursem i korekta nie jest potrzebna
- STOP jeśli statek osiągnął port docelowy (jest to zarazem koniec działania twojego kodu)
- daną określającą nowy kurs, jeśli okazało się, że statek płynie złym kursem
Wejście
- wiersz tekstu, zawierający dwie dane zmiennopozycyjne, określające współrzędne portu docelowego
- następnie nieznana z góry liczba wierszy tekstu, z których każdy zawiera dwie dane zmiennopozycyjne określające bieżące położenie statku
Wyjście
- nieznana z góry liczby wierszy tekstu, z których każdy zawiera jedną z trzech informacji
- napis OK, jeśli bieżące położenie statku leży na wyznaczonym ostatnio kursie
- napis STOP, jeśli bieżące położenie statku odpowiada położeniu docelowemu
- liczbę zmiennopozycyjną z przedziału <0..360), wyprowadzoną z trzema miejscami po kropce dziesiętnej, określającą nowy kurs statku, jeśli z położenia statku wynika, że kurs poprzedni nie został dotrzymany
Przykład
Wejście:
3.0 3.0
1.0 1.0
3.0 0.0
0.0 3.0
7.0 3.0
5.0 3.0
3.0 3.0
Wyjście:
OK
0.000
90.000
270.000
OK
STOP
Informacje dodatkowe
-
program zostanie uruchomiony 10 razy dla różnych zestawów danych
-
każde poprawne rozwiązanie daje 10% punktacji zadania
-
zadanie ma wartość punktową 6,0
Dodane przez: | Sławomir Wernikowski |
Data dodania: | 2013-11-30 |
Limit czasu wykonania programu: | 1s |
Limit długości kodu źródłowego | 3000B |
Limit pamięci: | 1536MB |
Cluster: | Cube (Intel G860) |
Języki programowania: | C CSHARP C++ 4.3.2 CPP C99 JAVA PAS-GPC PAS-FPC PERL PERL6 PHP PYTHON PYTHON3 PY_NBC RUBY |