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