パックマンは太りすぎを心配しているパックマンさんのアドバイスで、パックドットの毎日の摂取量を追跡することにしました。彼が迷路の所定のパスにあるPac-Dotsの数を数えるのを助けてください!
迷路
迷路の独自のエンコーディングを構築するために、ここで生データを取得できます。
パックマンの旅
この課題の文脈では、次の規則が適用されます。
- まず、朗報です。幽霊はいません。
- パックマンは常に上の写真に示されている位置からレースを開始し、東に向かいます。開始位置にはPac-Dotはありません。
- 彼はまっすぐな道を進んでいる限り、次のマスに進み続けます。
- 他の使用可能な経路(マップ上のオレンジ色の正方形)がない状態で90度の回転に遭遇すると、自動的かつ体系的に回転します。
- 複数のパスが利用可能なジャンクション(マップ上の緑の四角)に遭遇すると、同じ方向に進むか(該当する場合)、別の方向(Uターンを含む)を選択します。
- パックマンが迷路の中央左側または中央右側の出口の1つを通過すると、すぐに反対側に現れます。
- パックマンは、自分がたどる経路上のすべてのパックドットを食べます。パックドットが食べられると、迷路から取り除かれます。
チャレンジ
入力
パックマンが到達するジャンクションでのパックマンの動作を説明する文字列が与えられます。この文字列は、次の文字で構成されます。
L
:左に90°回転しますR
:右に90度回転しますF
:前進(方向変更なし)B
:後退(Uターン)
すべてのキャラクターが処理されると、パックマンは次のジャンクションで停止します。
出力
入力パスに沿って食べられるPac-Dotsの数を印刷または出力する必要があります。
ルール
- 完全なプログラムまたは関数を作成できます。
- 入力は、文字列または文字の配列として、大文字または小文字で入力できます。で他の文字(ただし、方向ごとに1文字のみ)または整数を使用することもできます
[0 .. 9]
。その場合は、回答で明確に指定してください。 - 入力は常に有効であると想定できます。(以下のjsFiddleはエラーを検出しますが、そうする必要はありません。)
- これはコードゴルフなので、バイト単位の最短コードが優先されます。
- 標準的な抜け穴は禁止されています。
ヒント
迷路の正確な形状を保存する必要はなく、最適でもない場合があります。
テストケースとデモ
このjsFiddleでは、次のテストケースまたはその他の入力をテストできます。
1. Input : ""
Output : 1
Comment: Pac-Man just advances to the first junction, eats the Pac-Dot on it and stops.
2. Input : "L"
Output : 7
3. Input : "FFR"
Output : 13
4. Input : "LFLR"
Output : 17
Comment: Pac-Man will exit on the middle right side and re-appear on the left side.
5. Input : "BBBB"
Output : 2
6. Input : "BRRFFFL"
Output : 15
7. Input : "LFFRLFFFFRF"
Output : 50
8. Input : "BRFRLRFRLFR"
Output : 54
Comment: Pac-Man will exit on the middle left side and re-appear on the right side.
9. Input : "FFLRLFFLLLLFFBFLFLRRRLRRFRFLRLFFFLFLLLLFRRFBRLLLFBLFFLBFRLLR"
Output : 244
Comment: All cleared!