
Twoje życie może zależeć od tego. Nie mrugaj. Nawet nie mrugaj. Mrugnij i nie żyjesz. Oni są szybcy. Szybciej niż możesz w to uwierzyć. Nie odwracaj się, nie odwracaj wzroku i nie mrugaj! Powodzenia.
Płaczące anioły to obca rasa, która nie może się poruszać, gdy jest obserwowana przez inną istotę (nawet innego anioła). Karmią się, wysyłając swoje ofiary z powrotem w czasie. Ty ( Doktor ) jesteś uwięziony w pokoju z niektórymi i musisz dostać się do swojego TARDIS.
Zadanie
Napisz program, który, biorąc pod uwagę reprezentację ASCII prostokątnego pokoju, wygeneruje ścieżkę, która doprowadzi cię do bezpieczeństwa. Jeśli jakikolwiek Anioł może zaatakować - w dowolnym momencie podczas postępu - ścieżka ta nie jest bezpieczna. Anioł może zaatakować, jeśli może cię zobaczyć, gdy nie jesteś widziany przez ciebie ani innego anioła.
Wejście
Wejście składa się z dwóch części. Po pierwsze, kierunek, w którym jesteś zwrócony (NSEW). Następnie na kolejnych liniach reprezentacja pokoju, pokazująca początkowe / końcowe lokalizacje oraz lokalizację / oblicze wszystkich Aniołów.
Poniższy przykład pokazuje, że jest jeden anioł skierowany na zachód, a ty zaczynasz patrzeć na południe.
S
..........
....D.....
..........
..........
..........
..........
..........
..........
.........W
..........
...T......
.- Pusta przestrzeńD- Doktor (pozycja początkowa)T- TARDIS (pozycja końcowa)N,S,E,W- Anioł skierowany w określonym kierunku (północ, południe, wschód, zachód)
Linia wzroku
Możesz zobaczyć dowolną przestrzeń z kątem 45 stopni w kierunku, w którym patrzysz. Linia wzroku jest zasłonięta, jeśli na bezpośredniej poziomej, pionowej lub 45-stopniowej przekątnej znajduje się inny byt. Każda inna przekątna nie zasłania widoku. Linia wzroku aniołów działa w ten sam sposób. Na przykład poniżej -przedstawia twoje pole widzenia, zakładając, że patrzysz na południe.
........
...D....
..---...
.-----..
-------.
---N----
---.--N-
---.----
Wynik
Dane wyjściowe to ciąg znaków reprezentujący ścieżkę, którą przejdziesz do wyjścia. Jeśli istnieje wiele bezpiecznych ścieżek, wybierz dowolną. Jeśli żadna ścieżka nie jest bezpieczna, wyjście 0. Jeśli mapa jest zniekształcona, rób co chcesz, włączając awarię. Uważaj, że jest zniekształcony, jeśli pokój nie jest prostokątny, nie ma wyjścia itp. Jeśli nie ma Aniołów, nie jest zniekształcony, po prostu łatwe.
Dla każdego kroku możesz zrobić jedną z dwóch rzeczy: przesuwać się w kierunku NSEW lub skręcać w kierunku NSEW (bez zmiany pozycji). Aby się poruszać, po prostu wypisz literę dla tego kierunku. Aby obrócić się w stronę kierunku, Fwydrukuj odpowiednią literę. Na przykład następujące dane wyjściowe:
SSFESSSSSSSW
jest bezpieczną ścieżką dla próbki podanej w sekcji wprowadzania. Poruszasz się dwa razy na południe, twarzą na wschód, aby mieć anioła w zasięgu wzroku, a następnie siedem razy na południe i raz na zachód, aby wejść do TARDIS.
Przypadki testowe
1) Możesz okrążyć wschodniego anioła, aby dostać się do TARDIS. Jeśli nie przejdziesz bezpośrednio między nimi, zablokują się one na swoim miejscu, więc nie ma znaczenia, w którą stronę patrzysz w dowolnym momencie.
W
...D....
........
........
........
.E.....W
........
........
...T....
2) Przegrywasz. Nie da się ich ominąć. Widzą się, dopóki nie przejdziesz między nimi. W tym momencie nie możesz stawić im czoła i gotowe. Równie dobrze może po prostu zamknąć oczy i skończyć z tym.
S
...D....
........
........
........
E......W
........
........
...T....
Zwycięski
Obowiązują standardowe zasady gry w golfa i luki , wygrywa najmniej bajtów. Postaram się wkrótce uzyskać więcej przypadków testowych, ale w międzyczasie możesz zaproponować własne.
Zdjęcie i cytat z Doctor Who.
J).