Trilhas de buggles

Seu buggle se perdeu num estranho labirinto, e você deve ajudá-lo a achar a saída que está representada em laranja. Você não pode simplesmente explicar o caminho para a saída com algo do tipo direita();avançar();avançar();avançar() por que você tem que salvar dois buggles ao mesmo tempo, que estão presos em mundos similares mas não iguais. Você pode alternar para o outro mundo usando o combobox acima da representação do mundo (onde está escrito 'Floresta Fechada' agora), e selecionar a outra entrada (que deve ler 'Floresta Mais Fechada').

A boa nova é que o caminho para a saída está desenhado no chão. Como você pode ver, o mundo é feito de vários corredores, com baggles no chão. Depois de cada corredor, você deve virar à esquerda se o corredor tiver três baggels ou mais, e virar a direita se tiver apenas 2 ou menos baggles.

Você deve contar exatamente 5 células por corredor. Aquela com a intersecção conta como a última do corredor anterior, não como a primeira depois de você virar.

Logo, a forma geral de seu código deve ser algo como "enquanto não encontrar a saída, pegue o próximo corredor para decidir se vira à esqueda ou à direita na próxima intersecção". Você pode determinar se você está na célula de saída (que é laranja) com o método saídaAlcançada() fornecido.

Para entrar em um corredor, você tem simplesmente que ir de uma intersecção para a outra enquanto conta os baggles que vê em seu caminho. O método "cruzamento()" diz se seu buggle está ou não numa intersecção. A complexidade extra é que no começo de um corredor, você está obviamente numa intersecção, mas você ainda precisa se mover. [!java|scala|c]Para isto, a forma mais fácil é usar um loop do / while (faça / enquanto) ao invés de um loop while (enquanto) normal para se mover até a próxima intersecção.[/!] [!python]Para isto, use uma variável extra indicando quando você já entrou no corredor, como segue. Isto vai garantir que você execute o corpo do loop pelo menos uma vez (quando o primeiraVez for verdadeiro) antes de nós usarmos realmente o valor retornado pelo cruzamento() para determinar se continuamos ou não.[/!]

[!python]
primeiraVez = True
while primeiraVez or not cruzamento():
  primeiraVez = False
  (corpo do loop)
[/!]

Você precisa de uma variável que é inicializada em 0, e incrementada cada vez que você vê um baggle no chão. Uma variável usada desta forma é frequentemente chamada de contador.

Não esqueça de resetar seu contador para 0 no começo de cada corredor!

Ah, e quando chegar na saída, não esqueça de dar um passo a mais para sair de fato do labirinto!