Siguiendo el consejo de la Sra. Pac-Man, que está preocupada por el sobrepeso, Pac-Man ha decidido realizar un seguimiento de su consumo diario de Pac-Dot. ¡Ayúdalo a contar el número de Pac-Dots en un camino dado en el laberinto!
El laberinto
Para ayudarlo a construir su propia codificación del laberinto, puede obtener algunos datos sin procesar aquí .
El viaje de Pac-Man
En el contexto de este desafío, se aplican las siguientes reglas:
- Primero, las buenas noticias: los fantasmas no están allí.
- Pac-Man siempre comienza su carrera en la posición indicada en la imagen de arriba, en dirección a Oriente. No hay Pac-Dot en la posición inicial.
- Mientras siga un camino recto, seguirá avanzando a los siguientes cuadrados.
- Cuando se encuentra con un giro de 90 ° sin ningún otro camino disponible (cuadrados naranjas en el mapa), toma el turno automática y sistemáticamente.
- Cuando se encuentra con un cruce donde hay varios caminos disponibles (cuadrados verdes en el mapa), puede continuar en la misma dirección, si corresponde, o elegir otra dirección (incluido un giro en U).
- Cuando Pac-Man pasa por una de las salidas en el lado medio izquierdo o medio derecho del laberinto, reaparece inmediatamente en el lado opuesto.
- Pac-Man se come todos los Pac-Dots en el camino que está siguiendo. Una vez que se ha comido un Pac-Dot, se retira del laberinto.
El reto
Entrada
Se le dará una cadena que describe el comportamiento de Pac-Man en los cruces que va a llegar. Esta cadena estará compuesta por los siguientes caracteres:
L
: gire 90 ° a la izquierdaR
: gire 90 ° a la derechaF
: ir hacia adelante (sin cambio de dirección)B
: ir hacia atrás (hacer un cambio de sentido)
Cuando todos los personajes han sido procesados, Pac-Man se detiene en el siguiente cruce que encuentra.
Salida
Debe imprimir o imprimir el número de Pac-Dots consumidos a lo largo de la ruta de entrada.
Reglas
- Puede escribir un programa completo o una función.
- Puede tomar la entrada en mayúsculas o minúsculas, ya sea como una cadena o una matriz de caracteres. También puede usar otros caracteres (pero solo un carácter por dirección) o números enteros
[0 .. 9]
. Si lo hace, especifíquelo claramente en su respuesta. - Puede suponer que la entrada siempre es válida. (El jsFiddle a continuación detectará errores, pero se supone que no debes hacerlo).
- Este es el código de golf, por lo que gana el código más corto en bytes.
- Las lagunas estándar están prohibidas.
Insinuación
Es posible que no sea necesario ni óptimo almacenar la forma exacta del laberinto.
Casos de prueba y demostración
Los siguientes casos de prueba, o cualquier otra entrada, se pueden probar en este 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!