Ou talvez não seja realmente um labirinto, mas ainda assim.
Regras:
Entrada é uma seqüência de duas linhas, consistindo de
*,1,xeX. Essa corda é um labirinto para percorrer. As linhas têm o mesmo comprimento .Você pode considerar a entrada como uma string com
,(vírgula) ou qualquer separador conveniente entre essas duas linhas. Ou você pode usar as duas linhas como argumentos separados para sua função.Resultado é o número de etapas que você deve executar para sair da sequência (o último passo é a etapa que o move para fora da sequência).
Você começa no canto superior esquerdo (a linha superior), antes do primeiro símbolo.
Para cada etapa, você avança com um símbolo (da enésima a (n + 1) ª posição ). Então, dependendo do personagem em que você pisa, o resultado é diferente. Aqui está o que cada caractere faz:
*- nada. Você apenas pisa nele normalmente.x- depois de pisar, alterne a linha, mas permaneça na mesma distância horizontal desde o início. Por exemplo, você pisou na terceira posição da linha superior e encontrou uma letra minúsculaxaqui. Então você se move imediatamente para a linha inferior, mas novamente na terceira posição.X- mude a linha e vá para a próxima posição. O exemplo é o mesmo lá, mas você também se move da terceira para a quarta posição (portanto, você está na segunda linha na quarta posição).1- apenas avance em mais uma posição.
Uma vez que cada personagem faz seu trabalho, ele é substituído por um espaço e não funciona mais.
Seguem exemplos.
Entrada :
x *Como dito anteriormente, você começa antes do primeiro símbolo da primeira linha. O primeiro passo leva você à letra
xe essa letra muda para a segunda linha. A letraxnão funciona mais comox, mas substituída por*. Isso será mais relevante nos últimos exemplos. Agora você está em um asterisco na linha inferior e isso não fez nada para você.O segundo passo é avançar e você sair da corda, para que o labirinto seja concluído e foram necessários 2 passos.
Saída
2.Entrada :
xX* x1*1º passo : você
xsegue em frente , o que o move naxlinha inferior. Aí vem a regra que diz que o caractere usado é substituído pelo asterisco. Então você volta para a primeira linha, mas ela não está maisxlá, pois foi usada e se tornou um asterisco. Então você se move com segurança nesse asterisco e a etapa é concluída (agora você está na primeira posição da primeira linha).2º passo : você segue em frente
X, empurra você para a linha inferior e empurra você para a frente. Agora você reside na terceira posição da segunda linha (asterisco), nunca tendo visitado a segunda posição (que contém1).3º passo : você avança, saindo da corda.
Saída :
3.
Casos de teste:
Entrada:
*1* xxxSaída:
3. (porque1faz você pular na terceira posição). Lá você nunca visita a segunda linha, mas é necessária parte da entrada.Entrada:
*X*1*x x*1xx*Saída:
4.Entrada:
1x1x ***XSaída:
3.Entrada:
1*x1xxx1*x x*x1*11X1xSaída:
6.Entrada:
xXXXxxx111* **xxx11*xxxSaída:
6.
"\n\n" é uma string de duas linhas ...
1, como você começar antes da 1ª linha, então você avançar um passo, e depois de terminar o labirinto ...