Diese Herausforderung ist inspiriert von einem Brettspiel, das ich vor einiger Zeit gespielt habe.
Die Geschichte dieser Herausforderung muss nicht unbedingt gelesen werden, das Ziel des Herausforderungsabschnitts sollte alles Notwendige erklären.
Die Geschichte
Die Menschen sind in einem großen Raum mit einem menschenfressenden Monster eingesperrt. Die Wände des Raumes sind verzaubert und teleportieren Objekte durch den Raum, wenn sie berührt werden. Das Monster marschiert durch den Raum und sucht nach Fleisch. Der erste Mensch in seinen Augen wird von seinen scharfen Zähnen verzehrt.
Das Ziel der Herausforderung
Sie erhalten die Karte des Raums, einschließlich des Standorts der Menschen und des Monsters.
%%%KLMNOPQRSTA%
%%J B
%I % C
H D
G %% E
F F
E % G
D H
C % I%
B J%%
%ATSRQPONMLK%%%
Lassen Sie uns die Komponenten der Karte aufschlüsseln.
- Buchstaben von
AbisT: Wenn das Monster auf eines dieser Buchstaben tritt, wird es zum zweiten Erscheinen dieses Buchstabens teleportiert und ändert nicht seine Richtung. Es werden immer nur null oder zwei Buchstaben auf der Tafel sein. %: Wandfliesen. Nur zur Formatierung und zum schönen Aussehen.#: Der Startort des Monsters.*: Die Standorte der Menschen.: Leere Kacheln, das Monster kann sich frei darauf bewegen.
Einige zusätzliche Dinge, die Sie über die Karte beachten sollten:
- Die Kartenabmessungen und die Objektposition sind nicht konstant, daher muss sich Ihr Code dynamisch daran anpassen.
Das Monster bewegt sich immer in die Richtung, in die es gerade zeigt (zu Beginn nach Westen), es sei denn, es entdeckt einen Menschen. In diesem Fall wendet es sich dem nächsten Menschen zu.
Das Monster entdeckt einen Menschen, wenn sich keine Wand- oder Teleporterplättchen in einer geraden horizontalen oder vertikalen Linie zwischen ihm und dem Menschen befinden.
Eine andere Sache, die zu beachten ist, ist, dass wenn sich das Monster vor einer festen Wand befindet ( %) oder sich zwischen zwei Menschen entscheiden muss, es immer rechts vor links priorisiert .
Wenn das Monster aus irgendeinem Grund nicht nach rechts abbiegen und einen Schritt nach vorne machen kann , wird es stattdessen nach links abbiegen .
Am Ende würde die Reihenfolge, in der das Monster Richtungen priorisiert, vorwärts, rechts, links, rückwärts gehen.
Eingang
- Die Karte, einschließlich des Startorts des Monsters und der Positionen der Leute als ihre jeweiligen Charaktere. Es sollte keine andere Eingabe als die Map-Zeichenfolge oder das Array von Zeichenfolgen oder Zeichen geben.
Die Eingabe kann in jedem vernünftigen Format empfangen werden; eine einzelne Zeichenfolge oder ein Array von Zeichenfolgen für die Karte.
Ausgabe
Die Koordinate der Person, die zuerst vom Monster gefressen wird.
Die Koordinaten beginnen in der oberen linken Ecke und sind 0-indiziert, sodass die erste Kachel die Koordinaten (0 | 0) enthält. Wenn Sie die 1-Indizierung verwenden, geben Sie dies bitte in Ihrer Antwort an.
Regeln
- Dies ist Code-Golf , der kürzeste Code in Bytes in einer Sprache gewinnt.
- Standardlücken sind verboten.
- Sie können davon ausgehen, dass das Monster immer einen Menschen erreichen kann.
Testfälle
Eingang:
%%%KLMNOPQRSTA%
%%J B
%I %* C
H * D
G %% E
F # F
E % G
D * H
C % I%
B J%%
%ATSRQPONMLK%%%
Ausgabe: (10,2)Da das Monster die beiden anderen Personen nicht sehen kann, wenn es an ihnen vorbeirennt, wird es zur anderen FWand teleportiert , wo es dann die letzte Person sieht.
Eingang:
%%%KLMNOPQRSTA%
%%J B
%I * C
H %%% * D
G #% E
F %%% % F
E G
D % H
C * I%
B * J%%
%ATSRQPONMLK%%%
Ausgabe: (12,3)
Eingang:
%%%KLMNOPQRSTA%
%%J B
%I %%% C
H *%#% D
G E
F F
E % G
D H
C I%
B J%%
%ATSRQPONMLK%%%
Ausgabe: (6, 3)
Eingang:
%%%%%%%%%%%%%%%
%#% %%% %
%A%ABCD %*% %
%*F G %%% %
% %BC% FD %
% % % %%%%
% % % %%
% % %% G %
% %
%*% % % %
%%%%%%%%%%%%%%%
Ausgabe: (1,9)
Viel Glück!