Desafio
Dado o tamanho da grade, as posições dos obstáculos, a posição do jogador e a posição do alvo, sua tarefa é encontrar um caminho para o jogador chegar ao alvo e evitar os obstáculos ao mesmo tempo (se necessário).
Entrada
- N : tamanho da grade
N x N
- P : Posição do jogador
[playerposx, playerposy]
- T : Posição do alvo
[targetposx, targetposy]
- O : Posições dos obstáculos
[[x1, y1], [x2, y2],...,[xn, yn]]
Resultado
Caminho : um jogador do caminho pode usar para alcançar o alvo[[x1, y1], [x2, y2],...,[xn, yn]]
Regras
- O ponto
[0,0]
está no canto superior esquerdo da grade. - A posição do jogador sempre estará no lado esquerdo da grade.
- A posição do alvo sempre estará no lado direito da grade.
- A grade sempre terá pelo menos um obstáculo.
- Você pode assumir que nenhum obstáculo se sobrepõe à posição do jogador ou do alvo.
- Você não precisa necessariamente encontrar o caminho mínimo.
- O jogador só pode se mover para a esquerda, direita, superior e inferior, não na diagonal.
- Você pode receber a entrada de qualquer maneira conveniente.
- Você pode assumir que sempre existirá um caminho para o jogador chegar ao alvo.
- Obviamente, para cada entrada existem vários caminhos válidos, escolha um.
- Suponha
N > 2
que a grade seja pelo menos3 x 3
.
Exemplos
Entrada: 9
, [6, 0]
, [3, 8]
, [[0, 5], [2, 2], [6, 4], [8, 2], [8, 7]]
saída possível:[[6, 0], [6, 1], [6, 2], [6, 3], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [4, 8], [3, 8]]
Entrada: 6
, [1, 0]
, [3, 5]
, [[1, 2], [2, 5], [5, 1]]
saída possível:[[1, 0], [1, 1], [2, 1], [2, 2], [2, 3], [2, 4], [3, 4], [3, 5]]
Nota
Observe que X
é para linhas e Y
para colunas . Não os confunda com as coordenadas da imagem.
Editar
Como @digEmAll apontou, devido às regras #2
e #3
, playerY = 0
e targetY = N-1
. Então, se você quiser, pode tomar como única entrada playerX
e e targetX
(se isso faz seu código mais curto).