Premissa
Recentemente, eu estava com meia hora de antecedência para um compromisso e decidi esperar do lado de fora. Eu também determinei que pareceria estranho se eu apenas ficasse imóvel na frente da casa. Por isso, decidi dar uma caminhada rápida, dentro de uma área limitada. Também concluí que, se eu começasse a andar em círculos, isso tornaria óbvio que eu estava demorando. Por isso, fui inspirado a criar meu primeiro desafio do Code Golf.
Especificação
Você receberá uma lista, um mapa da área, que conterá um " "
ou outro "#"
, que representa espaços livres e obstáculos de algum tipo. Os espaços livres podem ser cruzados apenas uma vez e leva 1 minuto para cruzá-lo. Sua posição inicial será representada com uma "@"
tradição parecida com um roguel, e o alvo será representado com um "$"
porque é isso que você perderá lá. Você também receberá um número inteiro que representará quantos minutos você precisa perder antes de não parecer que estava se intrometendo. Quando você pousa no"$"
, terá que ter a quantidade exata de minutos (portanto, se você estiver em contagem regressiva, precisará ser 1 em um bloco adjacente e 0 no bloco). Sempre será possível chegar ao destino. Seu programa ou função precisará retornar uma lista mostrando o caminho mais curto com <,>, ^ e v para representar as quatro direções possíveis.
Exemplos
Entrada:
[[" ", " ", " ", " "],
["@", " ", " ", "$"],
[" ", " ", " ", " "],
[" ", " ", " ", " "]]
e
5
Ouput:
[[">", ">", ">", "v"],
["^", " ", " ", "$"],
[" ", " ", " ", " "],
[" ", " ", " ", " "]]
Entrada:
[[" ", "#", " ", " ", " "],
[" ", "#", " ", " ", " "],
["@", "#", " ", "$", " "],
[" ", " ", " ", " ", " "],
[" ", "#", " ", " ", " "],
[" ", "#", " ", " ", " "]]
e
7
Saída:
[[" ", "#", " ", " ", " "],
[" ", "#", ">", "v", " "],
["v", "#", "^", "$", " "],
[">", ">", "^", " ", " "],
[" ", "#", " ", " ", " "],
[" ", "#", " ", " ", " "]]
Entrada:
[[" ", "#", " ", " ", " "],
[" ", "#", " ", " ", " "],
["@", "#", " ", "$", " "],
[" ", " ", " ", " ", " "],
[" ", "#", " ", " ", " "],
[" ", "#", " ", " ", " "]]
e
17
Saída:
[[" ", "#", " ", "v", "<"],
[" ", "#", " ", "v", "^"],
["v", "#", " ", "$", "^"],
[">", ">", "v", ">", "^"],
[" ", "#", "v", "^", "<"],
[" ", "#", ">", ">", "^"]]
Regras
- Aplicam-se brechas padrão
- Cada bloco deve ser movido apenas uma vez
- A quantidade exata de tempo deve ser gasta no quadro
- Apenas um caminho precisa ser exibido no caso de vários caminhos
- Esta é uma pergunta sobre código de golfe, para que a resposta mais curta seja ganha
- Conforme a pergunta de user202729 nos comentários, você pode assumir uma entrada válida.
Adicione um comentário se precisar de mais esclarecimentos