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 > 2que 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 Ypara colunas . Não os confunda com as coordenadas da imagem.
Editar
Como @digEmAll apontou, devido às regras #2e #3, playerY = 0e targetY = N-1. Então, se você quiser, pode tomar como única entrada playerXe e targetX(se isso faz seu código mais curto).
