説明
この課題のタスクは、空間で特定のオブジェクトを追跡するプログラムまたは機能を考案することです。
I / O
プログラムには3つの入力が与えられますが、これらは適切な方法で取得できます。
n飛行機の側面のサイズになります。(したがって、場合、飛行機はなります)。常に奇数の整数であると仮定できます。n
sオブジェクトの開始位置になり、座標のペアとして指定されます。
D順序付けられたペアのベクトルになります。Dの形式に従います。ここで、は、基本的および主要な方向に対して常にのいずれかであり、は「ティック」の数の整数。t k'N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'
これらの入力が与えられると、プログラムは平面内のオブジェクトの追跡を出力する必要があります。
ルール
出力には平面の境界が含まれている必要があります。例えば:
-21012 + +┌─────┐┐ 2││ 1││ 0││ 1││ 2││ -└─────┘
空の平面の例です。上記および横の数字は参照用であり、印刷する必要はありません。
空白でない限り(または空白としてレンダリングする限り)、境界に任意の文字を使用できます。選択するキャラクターは、平面全体を区切る必要があります。つまり、それらの間に隙間がないようにする必要があります。
許容されるプレーンには次のものがあります。
┌──┐.... ---- +-+
││。。| | | |
││。。| | | |
└──┘; ....; ----; +-+
許可されないプレーンは次のとおりです。
.... .... ++++。。
。。+ +。。
。+ +。。
; ....; ....; + +; 。。
追跡されるオブジェクトは、平面上のスペースを1つだけ占有し、境界文字と異なる限り、選択した任意の文字になります。
追跡されるオブジェクトのトレースは、プレーン上のスペースを1つしか占有せず、オブジェクトとは異なる限り、選択したどのような文字でもかまいません。
各要素についてにおける、オブジェクトが移動しなければならないに向かってスペースを、と後ろにトレースを残します。
オブジェクトが境界にぶつかると、それが反映されます。オブジェクトにまだ動きがある場合は、オブジェクトが反映された方向に動き続けます。
参考のために、これらの指示は相互に反映しています。
→上部または下部の境界が満たされたとき。
→横方向の境界が満たされたとき。
最終出力には、可能な限り最新のトレースが含まれます。つまり、オブジェクトがすでにトレースがあるスペースにトレースを残す場合、新しいトレース文字が古いトレース文字を上書きします。
通常どおり、標準の抜け穴はデフォルトで禁止されています。
得点:
これはコードゴルフの挑戦です。
例:
入力:、、
解決する:
0 ┌─────┐ ││ ││ 0│○│ ││ ││ └─────┘
0 ┌─────┐ │○│ │\│ 0│\│ ││ ││ └─────┘
0 ┌─────┐ │∧│ │| \│ 0│○\│ ││ ││ └─────┘
0 ┌─────┐ │∧│ │| \│ 0│└○\│ ││ ││ └─────┘
(0は参照用であり、最終出力にある必要はありません。)
0 ┌─────────┐ ││ ││ ││ │∧│ 0│/ | │ │○/ | │ │⟨/│ │\ /│ │∨│ └─────────┘
0 ┌─────────┐ │○│ │\│ │\│ │\│ 0│/ |⟩│ │∧/ /│ │⟨\ / /│ │\ \ /│ │∨∨│ └─────────┘
テストケース:
出力:
0 ┌─────┐ │∧│ │| \│ 0│└○\│ ││ ││ └─────┘
入力:、、
出力:
0 ┌─────────┐ │○│ │\│ │\│ │\│ 0│/ |⟩│ │∧/ /│ │⟨\ / /│ │\ \ /│ │∨∨│ └─────────┘
入力:、、
出力:
0 ┌───┐ │|│ 0│-○┐│ │|│ └───┘
入力:、、
出力:
0 ┌────────────┐ │∧│ │/ \│ │┌-/-\ \│ │\ | / \ \│ │\ | \ \│ 0│| /⟩│ │| \ / /│ │| /○│ │| / \│ │∨\│ │\│ └────────────┘
'N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'代わりに、整数0インデックスとして(または1インデックス)?そう[('NW',2),('S',2),('E',1)]なっ[[7,2],[4,2],[2,1]]例えば。