この課題は、前にプレイしたボードゲームに触発されました。
この課題のストーリーは必ずしも読む必要はありません。課題のセクションでは、必要なすべてを説明する必要があります。
物語
人々は人間を食い尽くすモンスターがいる大きな部屋の中に閉じ込められています。部屋の壁はエンチャントされており、触れるとオブジェクトが部屋全体にテレポートします。怪物は部屋を横切って行進し、肉を探します。視界の最初の人間はその鋭い歯によって消費されます。
チャレンジの目標
あなたは、人とモンスターの場所を含む部屋の地図を与えられます。
%%%KLMNOPQRSTA%
%%J B
%I % C
H D
G %% E
F F
E % G
D H
C % I%
B J%%
%ATSRQPONMLK%%%
マップのコンポーネントを分解してみましょう。
Ato からの文字T:モンスターがこれらのいずれかに踏み込むと、この文字の2番目の外観にテレポートされ、方向は変わりません。ボードには、文字が0つか2つしかありません。%:壁のタイル。書式設定と見栄えだけのために。#:モンスターの開始位置。*:人々の場所。:空のタイル、モンスターはそれらの上を自由に移動できます。
マップについて注意すべきいくつかの追加事項:
- マップの次元とオブジェクトの場所は一定ではないため、コードはそれに動的に適応する必要があります。
モンスターは、人間を見つけない限り、常に現在直面している方向(最初は西を向いています)に移動します。その場合、人間に最も近くなります。
壁とテレポーターのタイルが人間と人間の間に水平または垂直の直線状にない場合、モンスターは人間を見つけます。
もう1つ注意すべき点は、モンスターが堅い壁の前にいる場合(%)、または2人の人間の間で決定する必要がある場合は、常に右より左を優先するということです。
モンスターがなんらかの理由で右に曲がることができずに前進することができない場合、それは左に曲がります代わりにます。
つまり、最終的に、モンスターが方向を優先する順序は、前方、右、左、後方になります。
入力
- モンスターの開始位置と人々の位置をそれぞれのキャラクターとして含むマップ。マップ文字列、文字列の配列、または文字以外の入力があってはなりません。
入力は適切な形式で受け取ることができます。マップの単一の文字列または文字列の配列。
出力
モンスターに最初に食べられる人のコーディネート。
座標は左上隅から始まり、0から始まるため、最初のタイルの座標は(0 | 0)になります。1インデックスを使用している場合は、回答でそれを指定してください。
ルール
- これはcode-golfで、どの言語でもバイト単位で最も短いコードが優先されます。
- 標準の抜け穴は禁止されています。
- あなたはモンスターが常に人間に到達できると仮定するかもしれません。
テストケース
入力:
%%%KLMNOPQRSTA%
%%J B
%I %* C
H * D
G %% E
F # F
E % G
D * H
C % I%
B J%%
%ATSRQPONMLK%%%
出力:(10,2)、モンスターは他の2人を通り過ぎても他の2人を見ることができないため、他のF壁にテレポートされ、最後の人が表示されます。
入力:
%%%KLMNOPQRSTA%
%%J B
%I * C
H %%% * D
G #% E
F %%% % F
E G
D % H
C * I%
B * J%%
%ATSRQPONMLK%%%
出力: (12,3)
入力:
%%%KLMNOPQRSTA%
%%J B
%I %%% C
H *%#% D
G E
F F
E % G
D H
C I%
B J%%
%ATSRQPONMLK%%%
出力: (6, 3)
入力:
%%%%%%%%%%%%%%%
%#% %%% %
%A%ABCD %*% %
%*F G %%% %
% %BC% FD %
% % % %%%%
% % % %%
% % %% G %
% %
%*% % % %
%%%%%%%%%%%%%%%
出力: (1,9)
幸運を!