Um labirinto em declive é dado como uma série de linhas de dígitos separados por espaço, de 0 a 9, inclusive, mais um "S" e um "X", em que S indica o início e X indica o final. Em um labirinto em declive, você só pode ir para um espaço adjacente a você ao norte, sul, leste ou oeste (sem diagonais), e você só pode ir a espaços com um valor menor ou igual ao valor que você estão atualmente ativados.
O programa deve gerar um caminho para navegar pelo labirinto no mesmo formato da entrada, apenas todos os espaços atravessados devem ter um "." neles, e todos os espaços não visitados devem ter um "#" neles. As células inicial e final também devem manter seus "S" e "X", respectivamente. Você pode assumir que sempre há uma solução para o labirinto.
Exemplo de entrada:
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
Exemplo de saída:
. . . . # # S . #
. # # . . # # . .
. # # # . # # # .
. # # # . # # # .
. . X # . . . . .
fonte
S
eX
em qualquer direção? O labirinto é sempre solucionável?0
até9
inclusivo, certo?Respostas:
JavaScript (ES6) 219
Uma função retornando verdadeiro ou falso. A solução (se encontrada) é impressa no console. Ele não tenta encontrar uma solução ideal.
Ungolfed à morte e explicou mais do que o necessário
Teste no console Firefox / FireBug
Resultado
fonte
C # - 463
Aceita entrada via STDIN e deve produzir um caminho ideal, testado para o caso de teste especificado, mas não o contrário. Supõe que sempre há uma solução.
Estou com pressa, tenho um prazo em 7 horas, mas isso parecia muito divertido de se perder. Eu também estou sem prática. Pode ser muito embaraçoso se isso der errado, mas é razoavelmente golfe.
Código com comentários:
fonte