Vous pensiez que votre algorithme était suffisant pour échapper de tous les labyrinthes ? Et bien, pas tous les labyrinthes...
L'algorithme de suivi de mur que nous avons utilisé jusqu'à présent fonctionne seulement si l'entrée et la sortie sont placées à côté de murs connectés à un mur externe. Mais si la buggle commence au milieu du labyrinthe, il peut exister des pans de mur déconnectés du mur externe.
Dans cette situation, notre précédente stratégie ferait notre buggle tourner en rond pour toujours sur l'un de ces îlots. En effet, le labyrinthe dont vous devez vous échapper maintenant contient des îles, et la buggle ne commence pas sur un des murs externes. Vous pouvez essayer si vous voulez : Copie/collez votre code et appuyez sur le bouton 'Exécuter' pour admirez votre solution précédente échouer lamentablement.
Cette méthode de suivre un mur est toujours efficace est permet d'échapper de manière assez efficace à certaines parties du labyrinthe, on ne va donc pas la supprimer entièrement. À la place, nous allons cesser de suivre le mur sous certaines conditions. Notez que le baggle repose près d'un mur externe du labyrinthe. Donc nous voulons atteindre un mur externe et ensuite le suivre. Nous avons par exemple de rechercher le mur nord avant de le suivre jusqu'au baggle.
Pour trouver le mur nord, vous avez tout simplement à foncez vers le nord tant que c'est possible, et quand vous faites face à un obstacle, vous l'évitez (en utilisant la méthode précédente).
[!scala]var etat=0; etat match { case 0 => // courir au nord ... etat = 1; case 1 => // suivre à gauche ... etat = 0; case _ => println("Ce cas ne devrait pas arriver. Corrigez ce problème svp.") }[/!][!java]int etat=0; switch (etat) { case 0: // courir au nord ... etat = 1; break; case 1: // suivre à gauche ... etat = 0; break; }[/!][!python]coureurNord = True if coureurNord: ... coureurNord = False else: # suiveur à gauche ... coureurNord = True[/!][!scala]
N'oubliez pas de faire ramasser le baggle par votre buggle à la fin de votre code.
Vous êtes prêts. Tout ceci devrait suffire pour vous permettre de trouver comment sortir de ce labyrinthe, mais si ce n'est pas le cas, vous pouvez toujours demander l'astuce. Mais vous n'avez plus besoin d'aide, n'est-ce pas ?