Défi
Compte tenu de la taille de la grille, de la position des obstacles, de la position du joueur et de la position cible, votre tâche consiste à trouver un chemin pour que le joueur atteigne la cible et évite les obstacles en même temps (si nécessaire).
Contribution
- N : taille de la grille
N x N
- P : Position du joueur
[playerposx, playerposy]
- T : Position de la cible
[targetposx, targetposy]
- O : Positions des obstacles
[[x1, y1], [x2, y2],...,[xn, yn]]
Production
Chemin : un chemin que le joueur peut utiliser pour atteindre la cible[[x1, y1], [x2, y2],...,[xn, yn]]
Règles
- Le point se
[0,0]
trouve dans le coin supérieur gauche de la grille. - La position du joueur sera toujours sur le côté gauche de la grille.
- La position de la cible sera toujours sur le côté droit de la grille.
- La grille aura toujours au moins un obstacle.
- Vous pouvez supposer qu'aucun obstacle ne chevauche le joueur ou la position cible.
- Vous n'avez pas nécessairement besoin de trouver le chemin min.
- Le joueur ne peut se déplacer qu'à gauche, à droite, en haut et en bas et non en diagonale.
- Vous pouvez prendre l'entrée de n'importe quelle manière pratique.
- Vous pouvez supposer qu'il existe toujours un chemin pour que le joueur atteigne la cible.
- Évidemment, pour chaque entrée, il existe plusieurs chemins valides, choisissez-en un.
- Supposons
N > 2
que la grille soit au moins3 x 3
.
Exemples
Entrée: 9
, [6, 0]
, [3, 8]
, [[0, 5], [2, 2], [6, 4], [8, 2], [8, 7]]
Sortie possible:[[6, 0], [6, 1], [6, 2], [6, 3], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [4, 8], [3, 8]]
Entrée: 6
, [1, 0]
, [3, 5]
, [[1, 2], [2, 5], [5, 1]]
Sortie possible:[[1, 0], [1, 1], [2, 1], [2, 2], [2, 3], [2, 4], [3, 4], [3, 5]]
Remarque
Notez que X
c'est pour les lignes et Y
pour les cols. Ne les confondez pas avec les coordonnées d'une image.
Éditer
Comme l'a souligné @digEmAll, en raison des règles #2
et #3
, playerY = 0
et targetY = N-1
. Donc, si vous le souhaitez, vous pouvez prendre en entrée uniquement playerX
et et targetX
(si cela rend votre code plus court).