Un laberinto cuesta abajo se da como una serie de filas de dígitos separados por espacios de 0 a 9 inclusive, más una "S" y una "X", donde la S denota el comienzo y la X denota el final. En un laberinto cuesta abajo, solo puede ir a un espacio adyacente al norte, sur, este u oeste (sin diagonales), y solo puede ir a espacios con un valor menor o igual al valor están actualmente en
El programa debe generar una ruta para navegar a través del laberinto en el mismo formato que la entrada, solo todos los espacios recorridos deben tener un "." en ellos, y todos los espacios no visitados deben tener un "#" en ellos. Las celdas inicial y final también deben mantener su "S" y "X", respectivamente. Puede suponer que siempre hay una solución para el laberinto.
Entrada de ejemplo:
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
Salida de ejemplo:
. . . . # # S . #
. # # . . # # . .
. # # # . # # # .
. # # # . # # # .
. . X # . . . . .
fuente
S
yX
en cualquier dirección? ¿El laberinto siempre tiene solución?0
a9
incluyente, ¿verdad?Respuestas:
JavaScript (ES6) 219
Una función que devuelve verdadero o falso. La solución (si se encuentra) se emite en la consola. No trata de encontrar una solución óptima.
Ungolf hasta la muerte y explicó más de lo necesario
Prueba en la consola Firefox / FireBug
Salida
fuente
C # - 463
Acepta la entrada a través de STDIN, y debe producir una ruta óptima, probada para el caso de prueba dado, pero no de otra manera. Asume que siempre hay una solución.
Tengo un poco de prisa, tengo una fecha límite en 7 horas, pero esto parecía demasiado divertido como para perderlo. También estoy fuera de práctica. Podría ser muy vergonzoso si esto sale mal, pero es razonable jugar golf.
Código con comentarios:
fuente