4つの距離センサーを備えた小さなロボットがあります。部屋のレイアウトは知っていますが、グリッドの方向に固定できること以外の方向感覚はありません。読み取り値に基づいてロボットがどこにあるかを見つけたいが、センサーが限られているためあいまいになる可能性があります。
チャレンジの説明
部屋のレイアウトと時計回りの4つの距離測定値が表示され、あなたと壁の間のセル数が示されます。部屋の中央に壁があり、グリッドの端も壁です。ロボットを壁の上に置くことはできません。
あなたの目的は、ロボットがそこにいる可能性のある部屋内のすべての場所をリストし、与えられた読み取り値を与えることです。ロボットには向きの感覚がないため(グリッド上の90度の角度にロックされていることを除きます。つまり、ロボットが斜めになったり、他のスキュー角度になることはありません)、[1、2、3、 4]は、たとえば、[3、4、1、2]と同じです。
例
これらの例では、セル座標は、左上のセルから0のインデックス(x、y)のペアとして与えられます。読み取り値は、角括弧で囲まれたリストで時計回りに表示されます。レイアウトでは、空のセルを表すために、壁やその他の文字(通常はドット)にポンド記号を使用します。
事例1
. . . .
. . . .
. . # .
. . . .
- [1、0、2、3] ==>(1、0)、(3、1)
- [0、0、3、3] ==>(0、0)、(3、0)、(0、3)、(3、3)
- [2、1、1、0] ==>(0、2)、(2、1)
- [1、1、2、2] ==>(1、1)
事例2
# a . # a .
a # . . # a
. . # . . #
# . . # . .
a # . . # a
. a # . a #
- [0、0、1、1] ==>ドットであるグリッド上のすべての位置
- [1、0、0、0] ==>グリッド上のすべてのa
事例3
.
- [0、0、0、0] ==>(0、0)
事例4
. # #
. . .
- [1、2、0、0] ==>(0、1)
- [0、1、2、0] ==>(0、1)
- [0、0、1、0] ==>(0、0)
- [1、0、1、0] ==>(1、1)
- [0、1、0、1] ==>(1、1)
事例5
. # . .
. . . .
. . # .
. . . .
- [2、1、1、0] ==>(0、2)、(2、1)
- [0、2、2、1] ==>(1、1)
- [1、0、2、2] ==>(1、1)
- [0、3、0、0] ==>(0、0)
- [1、0、1、1] ==>(1、2)
その他の規則
- 入力は任意の便利な形式にすることができます。入力は、壁とスペースのグリッド、および時計回りの4つの距離のリストです。
- 出力は、読み取り値を満たすすべてのセルのリスト、または読み取り値を満たすセルを示すグリッドの修正バージョンのいずれかです。出力の正確な形式は、妥当で一貫している限り重要ではありません。有効な出力形式には次のものが含まれますが、これらに限定されません。
- 各セル座標の行を順序付きペアとして印刷する
- グリッドの印刷
.
、#
および!
それぞれ、スペース、壁、そして可能な位置のために。 - 順序付けられたペアのリストを返す
- インデックスのリストを返す
- スペース、壁、および可能な場所に異なる値を使用してリストのリストを返す
- 読み取りが発生するセルを表すために1を使用して、0と1のマトリックスを返す/印刷します。(壁を含める必要はありません)
- 繰り返しますが、このリストは完全ではないため、他の表現は一貫性があり、グリッドまたはリスト内のすべての有効な場所を表示している限り有効です。確信が持てない場合は、コメントを残してください。明確に説明させていただきます。
- 読み取り値は、グリッド上の少なくとも1つの場所に対応すると想定できます。
- 入力グリッドのサイズは少なくとも1x1で、少なくとも1つの空きスペースがあると想定できます。
- 入力グリッドは、各次元で256セル以下であると想定できます。
- 入力グリッドは常に完全な長方形であり、ギザギザではないと仮定できます。
- プログラムが無効な入力に対して正常な出力を行う場合、ペナルティやボーナスはありません。
- これはコードゴルフなので、最短のコードが勝ちます。
Case 5
はまったく正しくないようです。私が取得(0,2),(2,1)
、(1,3)
、(1,3)
、とnothing
。