Voici un problème intéressant à résoudre en quantité minimale de code. Je m'attends à ce que les solutions récursives soient les plus populaires.Code Golf: Résoudre un labyrinthe
Nous avons un labyrinthe qui est défini comme une carte de caractères, où =
est un mur, un espace est un chemin, +
est votre point de départ et #
est votre point de fin. Un exemple très simple comme ceci:
====
+ =
= ==
= #
====
Pouvez-vous écrire un programme pour trouver le chemin le plus court pour résoudre un labyrinthe dans ce style, en aussi peu que possible le code?
Points bonus si cela fonctionne pour toutes les entrées de labyrinthe, comme celles avec un chemin qui se croise sur lui-même ou avec un grand nombre de branches. Le programme devrait être en mesure de travailler pour de grands labyrinthes (disons, 1024x1024 - 1 Mo), et la façon dont vous passez le labyrinthe au programme n'est pas important.
Le "joueur" peut se déplacer en diagonale. Le labyrinthe d'entrée n'aura jamais de passage en diagonale, donc votre ensemble de mouvements de base sera en haut, en bas, à gauche, à droite. Un mouvement en diagonale serait simplement regarder un peu en avant pour déterminer si un haut/bas et gauche/droite pourrait être fusionné.
La sortie doit être le labyrinthe lui-même avec le chemin le plus court mis en surbrillance à l'aide du caractère astérisque (*
).
Bonne question mais semble assez difficile ... – RCIX
Le joueur (+) peut-il se déplacer en diagonale ou seulement horizontalement/verticalement? – Alex
Le joueur peut se déplacer en diagonale, ce qui devrait rendre les choses un peu plus faciles. –