この課題はグリッド上で行われます。
+----------+
| |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+
これは10 x 10ですが、任意の長方形にすることができます。
このグリッドには4つの方向があります。上、下、左、右。
タスクは、大文字の方向の初期で始まるパスを描くことです。この例では、Uから直接上に移動します。
+----------+
| |
| |
| |
| |
| |
| |
| |
| |
| U |
+----------+
パスは上に移動し、壁にぶつかるまでアスタリスク(*)で終わるフルストップ文字(。)で構成されます。
+----------+
| * |
| . |
| . |
| . |
| . |
| . |
| . |
| . |
| U |
+----------+
パスの開始に加えて、小文字の方向の頭文字で表される方向変換器もあります。
+----------+
| |
| |
| |
| r.....*|
| . |
| . |
| . |
| . |
| U |
+----------+
また、大文字のXは、パスを終了する障害物です。
+----------+
| |
| |
| |
| |
| r...*X |
| . |
| . |
| . |
| U |
+----------+
ルール
- 入力は、パスの開始を示す文字、方向変換器、障害物を含むフレーム(|、-、および+文字で構成される)で構成される文字列です。
- コードには、開始点と方向変換器によって記述されたパスをたどるために完全なストップ文字を追加し、パスが壁または障害物に出会った場合はアスタリスクを追加する必要があります。
- 複数のパスを開始できます。
- パスがループを記述する場合、コードはエラーなしで終了します。
- パスがパスの開始点と一致する場合、方向変更装置として機能します。
- これはコードゴルフであり、ローバイトコードであり、標準的な抜け穴はありません。
- 私はいつもオンライン通訳へのリンクを好みます。
テストケース
1:シンプル
+----------+
| |
| |
| |
| |
| |
| |
| |
| |
| U |
+----------+
+----------+
| * |
| . |
| . |
| . |
| . |
| . |
| . |
| . |
| U |
+----------+
2:右折
+----------+
| |
| |
| |
| r |
| |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| r.....*|
| . |
| . |
| . |
| . |
| U |
+----------+
3:クロスロード
+----------+
| |
| |
| |
| r d |
| |
| u l |
| |
| |
| U |
+----------+
+----------+
| * |
| . |
| . |
| . r..d |
| . . . |
| u....l |
| . |
| . |
| U |
+----------+
4:4つの交差パス
+----------+
| D |
| |
| |
|R |
| |
| L|
| |
| |
| U |
+----------+
+----------+
| * D |
| . . |
| . . |
|R........*|
| . . |
|*........L|
| . . |
| . . |
| U * |
+----------+
5:最初のループ
+----------+
| |
| |
| |
| r d |
| |
| u l |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| r..d |
| . . |
| u..l |
| . |
| . |
| U |
+----------+
6:チェンジャーとしてのスターター
+----------+
| |
| |
| |
| L |
| |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
|*..L |
| . |
| . |
| . |
| . |
| U |
+----------+
7:ストレートループ
+----------+
| |
| |
| |
| |
| r l |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| |
| r..l |
| . |
| . |
| . |
| U |
+----------+
8:タイトノット
+----------+
| |
| |
| |
| d l |
| r u |
| r u |
| |
| |
| U |
+----------+
+----------+
| * |
| . |
| . |
| d..l |
| .r.u |
| r.u |
| . |
| . |
| U |
+----------+
9:障害
+----------+
| |
| |
| |
| |
| r X |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| |
| r...*X |
| . |
| . |
| . |
| U |
+----------+
10:Sシェイプ
+----------+
|r d |
| |
| XXXXXXXX|
| d l |
|ul |
|XXXXXXX |
| |
|R u |
| |
+----------+
+----------+
|r.....d |
|. * |
|. XXXXXXXX|
|.d......l |
|ul . |
|XXXXXXX . |
| . |
|R.......u |
| |
+----------+
11:4-Way Knot
+----------+
| D |
| |
| r |
|R d |
| |
| u L|
| l |
| |
| U |
+----------+
+----------+
| * D |
| . . |
| r.....*|
|R....d. |
| .... |
| .u....L|
|*.....l |
| . . |
| U * |
+----------+
12:忙しいジャンクション
+----------+
|rrrrr rrrd|
| rlrl |
|ul rrd |
|ruX X |
|udl ll |
|ull |
|rlr |
|rdr d |
|Uruull |
+----------+
+----------+
|rrrrr.rrrd|
|.rlrl .|
|ul rrd .|
|ruX.X. .|
|udl.ll .|
|ull. .|
|rlr. .|
|rdr..d .|
|Uruull *|
+----------+
13:エッジへの開始
+----------+
| U |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+
+----------+
| U |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+
14:デッドパスの横断
+----------+
| |
| |
| |
| R |
| |
| |
| |
| |
| U|
+----------+
+----------+
| *|
| .|
| .|
| R..*|
| .|
| .|
| .|
| .|
| U|
+----------+
@TFeld追加、ありがとう!
—
AJファラデー
テストケースでは、すべての方向変換器に常に到達しているように見えるため、アルゴリズムを簡素化できます。正しくない場合は、テストケースを追加することをお勧めします。
—
アーナウルド
@Arnauld私はかなり確信してケース12内のいくつかの未使用の方向チェンジャーがありますよ
—
AJFaraday
グリッドは任意の長方形にすることができますが、すべてのテストケースのサイズと形状は同じであるようです。
—
ガストロープナー