Et mince ! Votre buggle s'est encore perdue dans le même genre de
labyrinthes, mais cette fois les corridors ne sont pas tous de la même
taille. Comme il n'y a aucun moyen de connaître à l'avance la longueur
du corridor que l'on commence à explorer, une boucle for
semble mal adaptée. Au lieu de cela, vous devriez changer votre boucle
interne en un while
. Utilisez la méthode
crossing()
, qui indique si votre buggle se trouve
actuellement à un embranchement.
Le problème, c'est que lorsque vous commencez l'exploration d'un
corridor, vous vous trouvez à une intersection mais vous voulez
avancer quand même. [!java|scala|c]La solution la plus simple est
alors d'utiliser une boucle do / while
au lieu d'un
simple while
pour bouger jusqu'à la prochaine
intersection.[/!] [!python]Utilisez pour cela une variable
supplémentaire indiquant si vous êtes déjà entré dans un
corridor. Cela vous permettra d'exécuter le core de boucle au moins
une fois (quand premiereFois
est vraie) avant de tester
la valeur retournée par crossing()
.[/!]
premiereFois = True while premiereFois or not crossing(): premiereFois = False (le corps de la boucle)[/!]
Avec ces nouvelles astuces, votre buggle devrait parvenir à s'échapper assez facilement.