Seguindo o conselho da Sra. Pac-Man, que está preocupada com o excesso de peso, o Pac-Man decidiu acompanhar sua ingestão diária de Pac-Dot. Ajude-o a contar o número de Pac-Dots em um determinado caminho no labirinto!
O labirinto
Para ajudá-lo a criar sua própria codificação do labirinto, você pode obter alguns dados brutos aqui .
A jornada de Pac-Man
No contexto desse desafio, as seguintes regras se aplicam:
- Primeiro, as boas notícias: os fantasmas não estão lá.
- Pac-Man sempre começa sua corrida na posição indicada na foto acima, indo para o leste. Não há Pac-Dot na posição inicial.
- Enquanto ele segue um caminho reto, ele continua avançando para os próximos quadrados.
- Quando ele encontra um giro de 90 ° sem nenhum outro caminho disponível (quadrados laranja no mapa), ele automaticamente e sistematicamente faz o giro.
- Quando ele encontra uma junção onde vários caminhos estão disponíveis (quadrados verdes no mapa), ele pode continuar na mesma direção - se aplicável - ou escolher outra direção (incluindo fazer uma inversão de marcha).
- Quando Pac-Man passa por uma das saídas no meio esquerdo ou no meio direito do labirinto, ele imediatamente reaparece no lado oposto.
- Pac-Man come todos os Pac-Dots no caminho que está seguindo. Depois que um Pac-Dot é comido, ele é removido do labirinto.
O desafio
Entrada
Você receberá uma sequência descrevendo o comportamento do Pac-Man nos cruzamentos que ele alcançará. Essa sequência será composta pelos seguintes caracteres:
L
: faça uma volta de 90 ° para a esquerdaR
: faça uma volta de 90 ° para a direitaF
: avançar (sem mudança de direção)B
: retroceda (faça uma inversão de marcha)
Quando todos os personagens foram processados, Pac-Man para no próximo cruzamento que ele encontra.
Saída
Você precisa imprimir ou imprimir o número de pontos-Pac consumidos ao longo do caminho de entrada.
Regras
- Você pode escrever um programa completo ou uma função.
- Você pode receber entradas em maiúsculas ou minúsculas, como uma sequência de caracteres ou uma matriz de caracteres. Você também pode usar outros caracteres (mas apenas um caractere por direção) ou números inteiros
[0 .. 9]
. Se você fizer isso, especifique-o claramente na sua resposta. - Você pode assumir que a entrada é sempre válida. (O jsFiddle abaixo detectará erros, mas você não deveria.)
- Isso é código-golfe, então o código mais curto em bytes vence.
- As brechas padrão são proibidas.
Sugestão
Pode não ser necessário nem ideal armazenar a forma exata do labirinto.
Casos de teste e demonstração
Os seguintes casos de teste - ou qualquer outra entrada - podem ser testados neste 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!