Niespokojny duch ślimaka Podróżaka
Ślimak Podróżak często urządza sobie dalekie wyprawy. W czasie pojedynczej podróży jego trasa kręci się niemiłosiernie. To pójdzie na wschód, to na południowy zachód, to na północ... Co ciekawe Podróżak porusza się skokami. Współrzędne wędrówki ślimaka zmieniają się zawsze o 1: albo po osi X, albo po osi Y, albo po obu osiach jeśli akurat wybrał trasę na skos.
Podróże Podróżaka i potomni
Ślimak Podróżak jest niesamowicie dumny z każdej swojej podróży. Chciałby aby potomni zapamiętali wszystkie współrzędne które kiedykolwiek odwiedził w czasie konkretnej podróży. I tu liczy na Ciebie: to znaczy, że Ty utworzysz kronikę pojedynczej podróży Podróżaka.
Bycie kronikarzem nie jest proste
Kłopot polega na tym, że Podróżak w czasie wyprawy często kilkakrotnie znajduje się w punkcie o danych współrzędnych - to na skutek nieskoordynowanych ruchów. A w kronice każdy punkt który odwiedził ślimak ma występować dokładnie raz. Dodatkowo, nasz Podróżak pragnie, by punkty zostały zapisane porządnie: od najmniejszych do największych.
Miejsca które odwiedził ślimak
Napisz program
HistoraPodróży :wędrówka, który wypisze na ekranie listę miejsc (współrzędnych punktów) które odwiedził ślimak Podróżak. Każde miejsce do którego dotarł ślimak powinno być wymienione dokładnie raz. Kolejność miejsc (współrzędnych punktów) na liście powinno być uporządkowana rosnąco.
Co oznacza parametr :wędrówka
Parametr
:wędrówka jest słowem który zawiera zapis kolejnych kierunków jakie obrał Podróżak w czasie swojej tułaczki. I tak:
-
N oznacza, że ślimak udał się na północ
-
O oznacza, że ślimak udał się na północny wschód
-
E oznacza, że ślimak udał się na wschód
-
F oznacza, że ślimak udał się na południowy wschód
-
S oznacza, że ślimak udał się na południe
-
A oznacza, że ślimak udał się na południowy zachód
-
W oznacza, że ślimak udał się na zachód
-
D oznacza, że ślimak udał się na północny zachód
Co oznacza, że miejsca które odwiedził ślimak mają być uporządkowane rosnąco
Zbiór miejsc które odwiedził Podróżak to lista par punktów - na przykład:
[0 0] [-1 -1] [-1 -2] [0 -2] [1 -1].
Pierwsza liczba oznacza współrzędną
x punktu w którym był ślimak. Druga liczba oznacza współrzędną
y punktu w którym był ślimak. Program ma zwrócić tą listę zgodnie z poniższymi założeniami:
-
Dana para punktów powinna być wymieniona dokładnie raz
-
Pary punktów powinny być wymienione w kolejności rosnącej:
-
Najpierw wymieniamy punkty o najmniejszej współrzędnej X.
-
Jeśli jest kilka punktów, które mają tą samą współrzędną X to najpierw wymieniamy te punkty które mają mniejsza współrzędną Y
Powyższe punkty [0 0] [-1 -1] [-1 -2] [0 -2] [1 -1] powinny być wymienione w następującej kolejności:
[-1 -2] [-1 -1] [0 -2] [0 0] [1 -1]
Wyjaśnienie jest następujące:
-
Punkty [-1 -2] [-1 -1] mają najmniejszą współrzędną x (równą -1) zaś punkt [-1 -2] ma mniejszą współrzędną y (równą -2) niż punkt [-1 -1] (współrzędna y wynosi -1).
-
Współrzędna x punktów [0 -2] i [0 0] wynosi 0 i jest kolejną najmniejszą współrzędną x. Dodatkowo punkt [0 -2] ma mniejszą współrzędną y (równą -2) niż punkt [0 0] (współrzędna y wynosi 0).
-
Punkt [1 -1] ma największą współrzędną x dlatego jest wymieniony jako ostatni.
-
Kierunek na wschód powoduje wzrost współrzędnych x, zaś kierunek na zachód powoduje zmniejszenie współrzędnych x
-
Kierunek na północ powoduje wzrost współrzędnych y, zaś kierunek na południe powoduje zmniejszenie współrzędnych y
-
Ruch ślimaka w danym kierunku oznacza wzrost lub zmniejszenie współrzędnych o 1.
Przykłady wywołania programu
Przykład nr 1
Wywołanie programu:
? HistoraPodróży "NFNWWS
powinno spowodować na ekranie wypisanie tekstu:
[-1 0] [-1 1] [0 0] [0 1] [1 0] [1 1]
Wyjaśnienie, dlaczego na ekranie powinna pojawić się powyższa lista jest następujące:
-
Współrzędne jakie odwiedził Podróżak są następujące:
-
Wystartował z punktu [0 0]
-
Udał się na północ (N) czyli jego pozycja to [0 1]
-
Udał się na południowy wschód (F) czyli jego kolejna pozycja to [1 0]
-
Udał się na północ (N) czyli jego kolejna pozycja to [1 1]
-
Udał się na zachód (W) czyli jego kolejna pozycja to [0 1]
-
Udał się na zachód (W) czyli jego kolejna pozycja to [-1 1]
-
Udał się na południe (S) czyli jego kolejna pozycja to [-1 0]
-
Otrzymujemy listę kolejnych miejsc do jakich dotarł w trakcie wędrówki ślimak: [0 0] [0 1] [1 0] [1 1] [0 1] [-1 1] [-1 0]
-
Po wyeliminowaniu miejsc które się powtarzają (dwa razy odwiedził miejsce [0 1]) otrzymujemy, że ślimak odwiedził następujące miejsca: [0 0] [0 1] [1 0] [1 1] [-1 1] [-1 0]
-
Po uporządkowaniu rosnąco miejsc odwiedzonych przez Podróżaka otrzymujemy listę: [-1 0] [-1 1] [0 0] [0 1] [1 0] [1 1].
Tą listęTwój program powinien wypisać na ekranie.
Przykład nr 2
Wywołanie programu:
? HistoraPodróży "AENFWWOD
powinno spowodować na ekranie wypisanie tekstu:
[-1 -1] [-1 1] [0 -1] [0 0] [1 -1]
Wyjaśnienie, dlaczego na ekranie powinna pojawić się powyższa lista jest następujące:
-
Współrzędne jakie odwiedził Podróżak są następujące:
-
Wystartował z punktu [0 0]
-
Udał się na południowy zachód (A) czyli jego kolejna pozycja to [-1 -1]
-
Udał się na wschód (E) czyli jego kolejna pozycja to [0 -1]
-
Udał się na północ (N) czyli jego kolejna pozycja to [0 0]
-
Udał się na południowy wschód (F) czyli jego kolejna pozycja to [1 -1]
-
Udał się na zachód (W) czyli jego kolejna pozycja to [0 -1]
-
Udał się na zachód (W) czyli jego kolejna pozycja to [-1 -1]
-
Udał się na północny wschód (O) czyli jego kolejna pozycja to [0 0]
-
Udał się na północny zachód (D) czyli jego kolejna pozycja to [-1 1]
-
Otrzymujemy listę kolejnych miejsc do jakich dotarł w trakcie wędrówki ślimak: [0 0] [-1 -1] [0 -1] [0 0] [1 -1] [0 -1] [-1 -1] [0 0] [-1 1]
-
Po wyeliminowaniu miejsc które się powtarzają ([0 0] trzykrotnie, [-1 -1] dwukrotnie, [0 -1] dwukrotnie) otrzymujemy, że ślimak odwiedził następujące miejsca: [0 0] [-1 -1] [0 -1] [1 -1] [-1 1]
-
Po uporządkowaniu rosnąco miejsc odwiedzonych przez Podróżaka otrzymujemy listę: [-1 -1] [-1 1] [0 -1] [0 0] [1 -1].
Tą listęTwój program powinien wypisać na ekranie.