Un labyrinthe en descente est donné comme une série de rangées de chiffres séparés par des espaces de 0 à 9 inclus, plus un "S" et un "X", où le S désigne le début et le X désigne la fin. Dans un labyrinthe en descente, vous ne pouvez aller que dans un espace adjacent à vous au nord, au sud, à l'est ou à l'ouest (pas de diagonales), et vous ne pouvez aller que dans des espaces avec une valeur inférieure ou égale à la valeur que vous sont actuellement activés.
Le programme doit sortir un chemin pour naviguer à travers le labyrinthe dans le même format que l'entrée, seuls tous les espaces traversés doivent avoir un "." en eux, et tous les espaces non visités doivent avoir un "#" en eux. Les cellules de début et de fin doivent également conserver leurs «S» et «X», respectivement. Vous pouvez supposer qu'il existe toujours une solution au labyrinthe.
Exemple d'entrée:
3 3 3 3 2 1 S 8 9
3 1 1 3 3 0 6 8 7
1 2 2 4 3 2 5 9 7
1 2 1 5 4 3 4 4 6
1 1 X 6 4 4 5 5 5
Exemple de sortie:
. . . . # # S . #
. # # . . # # . .
. # # # . # # # .
. # # # . # # # .
. . X # . . . . .
S
etX
dans n'importe quelle direction? Le labyrinthe est-il toujours résoluble?0
à9
inclusif, non?Réponses:
JavaScript (ES6) 219
Une fonction renvoyant vrai ou faux. La solution (si trouvée) est sortie sur la console. Il n'essaie pas de trouver une solution optimale.
Ungolfed à mort et a expliqué plus que nécessaire
Test dans la console Firefox / FireBug
Production
la source
C # - 463
Accepte l'entrée via STDIN et devrait produire un chemin optimal, testé pour le cas de test donné, mais pas autrement. Suppose qu'il y a toujours une solution.
Je suis un peu pressé, j'ai un délai de 7 heures, mais cela semblait trop amusant à manquer. Je suis aussi hors de pratique. Cela pourrait être très embarrassant si cela se passe mal, mais c'est assez golfé.
Code avec commentaires:
la source