Dein Leben könnte davon abhängen. Blinzel nicht. Blinzel nicht mal. Blink und du bist tot. Sie sind schnell. Schneller als Sie glauben können. Drehen Sie nicht den Rücken, schauen Sie nicht weg und blinzeln Sie nicht! Viel Glück.
Weinende Engel sind eine fremde Rasse, die sich nicht bewegen kann, wenn sie von einem anderen Wesen (sogar einem anderen Engel) beobachtet werden. Sie ernähren sich, indem sie ihre Opfer in die Vergangenheit schicken. Sie ( der Doktor ) sind mit einigen in einem Raum gefangen und müssen zu Ihrer TARDIS.
Aufgabe
Schreiben Sie ein Programm, das anhand einer ASCII-Darstellung eines rechteckigen Raums einen Pfad ausgibt, der Sie in Sicherheit bringt. Wenn ein Engel angreifen kann - zu irgendeinem Zeitpunkt während deines Fortschritts - dann ist dieser Weg nicht sicher. Ein Engel kann angreifen, wenn er dich sehen kann, ohne von dir oder einem anderen Engel gesehen zu werden.
Eingang
Die Eingabe besteht aus zwei Teilen. Erstens die Richtung, in die Sie schauen (NSEW). Dann in den folgenden Zeilen eine Darstellung des Raums mit den Start- / Endpositionen und der Position / Ausrichtung aller Engel.
Das folgende Beispiel zeigt, dass es einen Engel gibt, der nach Westen zeigt, und Sie beginnen, nach Süden zu blicken.
S
..........
....D.....
..........
..........
..........
..........
..........
..........
.........W
..........
...T......
.
- FreiraumD
- Der Doktor (Ausgangsposition)T
- Die TARDIS (Endposition)N,S,E,W
- Ein Engel, der der angegebenen Richtung zugewandt ist (Norden, Süden, Osten, Westen)
Sichtlinie
Sie können jeden Raum innerhalb von 45 Grad der Blickrichtung sehen. Die Sichtlinie ist beeinträchtigt, wenn sich entlang einer direkten horizontalen, vertikalen oder 45-Grad-Diagonale ein anderes Objekt befindet. Jede andere Diagonale ist nicht behindern die Sicht. Die Sichtlinie der Engel funktioniert auf die gleiche Weise. Im Folgenden wird beispielsweise -
Ihr Sichtfeld dargestellt, vorausgesetzt, Sie sind nach Süden ausgerichtet.
........
...D....
..---...
.-----..
-------.
---N----
---.--N-
---.----
Ausgabe
Die Ausgabe ist eine Zeichenfolge, die den Pfad darstellt, den Sie zum Beenden verwenden. Wenn es mehrere sichere Pfade gibt, wählen Sie einen aus. Wenn kein Pfad sicher ist, wird ausgegeben 0
. Wenn die Karte fehlerhaft ist, tun Sie, was Sie möchten, einschließlich des Absturzes. Betrachten Sie es als fehlerhaft, wenn der Raum nicht rechteckig ist, es keinen Ausgang gibt usw. Wenn es keine Engel gibt, ist es nicht fehlerhaft, einfach einfach.
Für jeden Schritt haben Sie zwei Möglichkeiten: Bewegen Sie sich in eine NSEW-Richtung oder drehen Sie sich in eine NSEW-Richtung (ohne die Position zu ändern). Zum Bewegen geben Sie einfach den Buchstaben für diese Richtung aus. Um sich einer Richtung zuzuwenden, geben Sie F
den entsprechenden Buchstaben ein. Zum Beispiel die folgende Ausgabe:
SSFESSSSSSSW
ist ein sicherer Pfad für das im Eingabeabschnitt angegebene Beispiel. Du bewegst dich zweimal nach Süden, nach Osten, um den Engel im Blick zu behalten, und dann noch siebenmal nach Süden und einmal nach Westen, um die TARDIS zu betreten.
Testfälle
1) Sie können um den nach Osten gerichteten Engel herumgehen, um zur TARDIS zu gelangen. Wenn Sie nicht direkt zwischen sie treten, rasten sie sich gegenseitig ein, sodass es egal ist, in welche Richtung Sie sich zu einem bestimmten Zeitpunkt befinden.
W
...D....
........
........
........
.E.....W
........
........
...T....
2) Sie verlieren. Es gibt keine Möglichkeit, an ihnen vorbei zu kommen. Sie können sich sehen, bis Sie zwischen sie treten. An diesem Punkt können Sie nicht beide konfrontieren und Sie sind fertig. Könnte auch nur die Augen schließen und es hinter sich bringen.
S
...D....
........
........
........
E......W
........
........
...T....
Gewinnen
Es gelten die Standard-Golfregeln und -Lücken , die Mindestanzahl an Gewinnen. Ich werde versuchen, bald weitere Testfälle zu bekommen, kann aber in der Zwischenzeit gerne eigene vorschlagen.
Bild und Zitat von Doktor Who.
J
) steht.