За порадою пані Пак-Ман, яка переживає за те, щоб він набрав зайву вагу, Пак-Ман вирішив слідкувати за щоденним прийомом Пак-Дота. Допоможіть йому порахувати кількість Pac-Dots на заданому шляху в лабіринті!
Лабіринт
Щоб допомогти вам створити власне кодування лабіринту, ви можете отримати тут кілька необроблених даних .
Подорож Пак-Мана
У контексті цього виклику застосовуються такі правила:
- По-перше, гарна новина: привидів там немає.
- Пак-Ман завжди починає свою гонку у положенні, зазначеному на малюнку вище, спрямовуючись на Схід. У вихідному положенні немає Pac-Dot.
- Поки він прямує прямим шляхом, він продовжує просуватися до наступних квадратів.
- Коли він стикається з поворотом на 90 ° без іншого доступного шляху (помаранчеві квадрати на карті), він автоматично та систематично здійснює поворот.
- Коли він стикається з перехрестям, де є кілька шляхів (зелені квадрати на карті), він може продовжувати в тому ж напрямку - якщо це можливо - або обрати інший напрямок (у тому числі робити поворот).
- Коли Pac-Man проходить через один з виходів на середній лівій або середній правій частині лабіринту, він негайно з’являється на протилежному боці.
- Pac-Man з'їдає всі Pac-Dots на шляху, який він йде. Після того, як Pac-Dot був з'їдений, його видаляють з лабіринту.
Змагання
Вхідні дані
Вам видадуть рядок, що описує поведінку Пак-Мана на місцях стику, до якого він збирається досягти. Цей рядок буде складатися з таких символів:
L
: зробіть поворот на 90 ° влівоR
: зробіть поворот на 90 ° праворучF
: йти вперед (без зміни напрямку)B
: йти назад (робити поворот)
Коли всі персонажі були оброблені, Pac-Man зупиняється на наступному стику, на який він стикається.
Вихід
Ви повинні надрукувати або вивести кількість з'їдених Pac-Dots на шляху введення.
Правила
- Ви можете написати повну програму або функцію.
- Ви можете приймати вхід у великому або малому регістрі, як рядок або масив символів. Ви також можете використовувати інші символи (але лише один символ у напрямку) або цілі числа
[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!