A - Rescue Mission (ASD Mission Briefing)
Transkrypt
A - Rescue Mission (ASD Mission Briefing)
! A - Rescue Mission. BRIEFING! 10-14-2012 Miejsce Akcji: Tajna kwatera główna wrogiej agencji wywiadu. Kompleks został umieszczony w Szwajcarii w bunkrze pod siedzibą UBS (Union Bank of Switzerland) - Szwajcarskiej firmy finansowej. W kompleksie znajdują się całe poziomy z celami w których przetrzymywani są nasi agenci przejęci podczas ostatniej akcji, która okazała się zasadzką obcych sił wywiadowczych. Cel Misji: Twoje zadanie polega na włamaniu się do systemu komputerowego kompleksu i wydobycie informacji, w których celach przetrzymywani są nasi agenci. Następnie poprowadzisz naszych agentów, którzy uwolnią więźniów. System zabezpieczeń kompleksu jest bardzo skomplikowany. Cele umieszczone są na siatce N x M. Każda cela jest połączona z celami sąsiadującymi drzwiami, które można otworzyć jedynie raz na określoną ilość sekund. Po otwarciu drzwi należy odczekać daną ilość czasu aby otworzyć następne. Każda cela ma swoją rangę i można do niej wejść dopiero po określonym czasie od wejścia do celi sąsiadującej. Każdy agent biorący udział w akcji ratunkowej może podjąć tylko jednego więźnia i doprowadzić go do wyjścia. Zapomniałbym, na każdy poziom można się dostać tylko jednymi drzwiami do celi o współrzędnych (1, M), a wyjść jedynie przez drzwi w celi o współrzędnych (N, 1). Trasa którą przygotujesz dla każdego z agentów musi przebiegać przez cele w taki sposób, aby agent przebywał na poziomie jak najkrócej i mógł podjąć więźnia z celi o wyznaczonych współrzędnych (X, Y). Musisz napisać program, który będzie pobierał z bazy Kwatery dane o celach i więźniach. Według naszego Intelu struktura danych w bazie wygląda następująco: Linia 0: Z — ilość poziomów na których są interesujące nas cele; Następnie dane dla poszczególnych poziomów: Linia 0: M N — ilość wierszy i kolumn w siatce rozkładu cel na danym poziomie; Linie od 1 do M: L1 L2 L3 … LN — N liczb oznaczających ilość sekund, po których od wejścia do sąsiadującej celi można otworzyć drzwi do tej celi; Linie od M+2 ->: X Y — współrzędne dla kolejnych cel w których przetrzymywani są nasi agenci; Linia końcowa: 0 0 — w momencie gdy otrzymasz takie współrzędne, przeprowadzisz kolejnego agenta najszybszą możliwą trasą do wyjścia i przeniesiesz się na kolejny poziom, aż do uwolnienia wszystkich więźniów z wszystkich Z poziomów; Każdy z naszych agentów posiada komputer umocowany na nadgarstku, na którym będzie miał zainstalowaną odpowiednią aplikację nawigacyjną. Dlatego też ważne jest aby wyjście twojego programu miało specyficzny format. Każda linia, to dane dla jednego agenta w postaci: K S MAPA K — to całkowity czas przejścia poziomu, uwalniając przy tym więźnia ze wskazanej celi; S — to ilość różnych cel które będzie musiał odwiedzić agent podczas swojego przejścia; MAPA — to zapis trasy, w którą stronę mają się poruszać: N - północ, E - wschód, S - południe, W - północ. Te informacje nie są oddzielane żadnymi innymi znakami; Powodzenia Agencie. —1— ! BRIEFING! Przykładowe dane wejściowe i trasy jakie powinieneś wyznaczyć. Dane wejściowe wyeksportowane z bazy danych: fig. 1 — Yours software input data Dane które powinieneś wyprodukować z tego wejścia: fig. 2 — Yours software output data —2— 10-14-2012